|
76740
|
NULL
|
0
|
2026-04-24T08:19:49.158465+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777018789158_m1.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
Nikolay Yankov
Yesterday at 1:31:46 PM
1:31 PM
какво значи които са пратени?
Yesterday at 1:32:17 PM
1:32
по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата
Lukas Kovalik
Yesterday at 1:35:32 PM
1:35 PM
да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика
(edited)
Jump to date
Aneliya Angelova
Today at 11:13:41 AM
11:13 AM
Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 11:15:05 AM
11:15 AM
седмични не са ли в понеделник само
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Aneliya Angelova
Today at 11:15:19 AM
11:15 AM
да
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:15:56 AM
11:15
аз ги генерирах вчера. Да не би сутрин да минава джоба за разпращане на мейли и да събира всички генерирани репорти със статус 3 и да ги разпраща
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:16:08 AM
11:16
без да се съобразява далки е дневен или седмичен или месечен
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 11:16:37 AM
11:16 AM
а да, за пращане мисля че няма проверки
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:16:56 AM
11:16
чакай да видя, мисля че само при генериране
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 11:18:33 AM
11:18 AM
Иначе ако това е обяснението - нека така си остане.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Adelina Petrova, Direct Message, 1 of 7 suggestions
Aneliya Angelova is typing...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":21,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:47:31 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:47 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани","depth":23,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:31:46 PM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:31 PM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"какво значи които са пратени?","depth":23,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:32:17 PM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:32","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата","depth":23,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:35:32 PM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:35 PM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":21,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:13:41 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:15:05 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:15 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"седмични не са ли в понеделник само","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:15:19 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:15 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"да","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 11:15:56 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:15","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"аз ги генерирах вчера. Да не би сутрин да минава джоба за разпращане на мейли и да събира всички генерирани репорти със статус 3 и да ги разпраща","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 11:16:08 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:16","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"без да се съобразява далки е дневен или седмичен или месечен","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:16:37 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:16 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"а да, за пращане мисля че няма проверки","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Today at 11:16:56 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:16","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"чакай да видя, мисля че само при генериране","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":20,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:18:33 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:18 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Иначе ако това е обяснението - нека така си остане.","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova is typing","depth":11,"role_description":"text"}]...
|
-666114593636527653
|
-3586248686131838894
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
Nikolay Yankov
Yesterday at 1:31:46 PM
1:31 PM
какво значи които са пратени?
Yesterday at 1:32:17 PM
1:32
по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата
Lukas Kovalik
Yesterday at 1:35:32 PM
1:35 PM
да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика
(edited)
Jump to date
Aneliya Angelova
Today at 11:13:41 AM
11:13 AM
Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 11:15:05 AM
11:15 AM
седмични не са ли в понеделник само
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Aneliya Angelova
Today at 11:15:19 AM
11:15 AM
да
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:15:56 AM
11:15
аз ги генерирах вчера. Да не би сутрин да минава джоба за разпращане на мейли и да събира всички генерирани репорти със статус 3 и да ги разпраща
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:16:08 AM
11:16
без да се съобразява далки е дневен или седмичен или месечен
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Today at 11:16:37 AM
11:16 AM
а да, за пращане мисля че няма проверки
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Today at 11:16:56 AM
11:16
чакай да видя, мисля че само при генериране
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
Aneliya Angelova
Today at 11:18:33 AM
11:18 AM
Иначе ако това е обяснението - нека така си остане.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Adelina Petrova, Direct Message, 1 of 7 suggestions
Aneliya Angelova is typing
Firefox• 0FileEditViewHistory→BookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com•Daily - Platform - now100% K78 • Fri 24 Apr 9:46:13|=Pop out this videoNikolay NikolovStefka StoyanovaGalya DimitrovaLukas Kovalik9:46 AM | Daily - Platform• 0:27...
|
NULL
|
|
76656
|
NULL
|
0
|
2026-04-24T08:14:41.340526+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777018481340_m2.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:11:46 AM
10:11 AM
но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък
Aneliya Angelova
Yesterday at 10:13:21 AM
10:13 AM
Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент
Lukas Kovalik
Yesterday at 10:13:47 AM
10:13 AM
да, ами добре ще ги сменя, на старите репорти
(edited)
Aneliya Angelova
Yesterday at 10:14:00 AM
10:14 AM
оки
Yesterday at 10:15:09 AM
10:15
тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.0056515955,"top":0.058260176,"width":0.011968086,"height":0.028731046},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.0029920214,"top":0.10055866,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.0066489363,"top":0.13806863,"width":0.009973404,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.0029920214,"top":0.15482841,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.0076462766,"top":0.19233839,"width":0.007978723,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.0029920214,"top":0.20909816,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.004986702,"top":0.24660814,"width":0.012965426,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.0029920214,"top":0.26336792,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0076462766,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.0029920214,"top":0.31763768,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.00731383,"top":0.35514766,"width":0.008643617,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.0029920214,"top":0.3719074,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.006981383,"top":0.4094174,"width":0.008976064,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"bounds":{"left":0.042220745,"top":0.092577815,"width":0.03723404,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"bounds":{"left":0.042220745,"top":0.114924185,"width":0.025598405,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"bounds":{"left":0.042220745,"top":0.13727055,"width":0.018949468,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"bounds":{"left":0.042220745,"top":0.15961692,"width":0.015957447,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"bounds":{"left":0.042220745,"top":0.1819633,"width":0.029587766,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"bounds":{"left":0.042220745,"top":0.20430966,"width":0.022938829,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"bounds":{"left":0.042220745,"top":0.22665602,"width":0.045212764,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"bounds":{"left":0.042220745,"top":0.2490024,"width":0.045877658,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"bounds":{"left":0.042220745,"top":0.27134877,"width":0.03125,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"bounds":{"left":0.042220745,"top":0.29369512,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.3160415,"width":0.03856383,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.33838788,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.36073422,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.042220745,"top":0.3830806,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.40542698,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.42777336,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.4501197,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.5027933,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.5027933,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.5027933,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.5203512,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.5203512,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.5251397,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.042220745,"top":0.547486,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.5698324,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.59217876,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.61452514,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.6368715,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.6592179,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.6815643,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.7039106,"width":0.034242023,"height":0.005586592},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.033909574,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.034242023,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.03523936,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.021609042,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.7086991,"width":0.011635638,"height":0.0007980846},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.10206117,"top":0.09177973,"width":0.030585106,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.033909574,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.021941489,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.16921543,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.17852394,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.19115691,"top":0.09177973,"width":0.010970744,"height":0.030327214},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":21,"bounds":{"left":0.14660904,"top":0.12689546,"width":0.032579787,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:11:46 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:11 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък","depth":23,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:13:21 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент","depth":23,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:13:47 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"да, ами добре ще ги сменя, на старите репорти","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:14:00 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:14 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"оки","depth":23,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:15:09 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:15","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега","depth":23,"bounds":{"left":0.11801862,"top":0.11572227,"width":0.09940159,"height":0.035913806},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"bounds":{"left":0.11801862,"top":0.15961692,"width":0.030917553,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"bounds":{"left":0.14860372,"top":0.16121309,"width":0.0029920214,"height":0.014365523},"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:47:31 AM","depth":22,"bounds":{"left":0.1512633,"top":0.16360734,"width":0.01761968,"height":0.011173184},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:47 AM","depth":23,"bounds":{"left":0.1512633,"top":0.16360734,"width":0.01761968,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани","depth":23,"bounds":{"left":0.11801862,"top":0.17877094,"width":0.091755316,"height":0.08459697},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"bounds":{"left":0.13730054,"top":0.14604948,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"bounds":{"left":0.14793883,"top":0.14604948,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"bounds":{"left":0.15857713,"top":0.14604948,"width":0.010638298,"height":0.025538707},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"bounds":{"left":0.16921543,"top":0.14604948,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"bounds":{"left":0.17985372,"top":0.14604948,"width":0.010638298,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"bounds":{"left":0.22340426,"top":0.14604948,"width":0.0003324468,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5744103644316845297
|
-3480905256510155238
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:11:46 AM
10:11 AM
но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък
Aneliya Angelova
Yesterday at 10:13:21 AM
10:13 AM
Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент
Lukas Kovalik
Yesterday at 10:13:47 AM
10:13 AM
да, ами добре ще ги сменя, на старите репорти
(edited)
Aneliya Angelova
Yesterday at 10:14:00 AM
10:14 AM
оки
Yesterday at 10:15:09 AM
10:15
тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
DMSActivityMorerireroxToolsHelpcalMistorbookmarksJiminny …..vXStarredi• jiminny-x-integrati..8 platform-inner-teamE) Channels# ai-chapter# ai-team# alerts# backend# c-learning-peoplei confusion-clinic# curiosity_labadeal-insichts-dev# engineering# frontend# general# infra-changes# jiminny-bg8 people-with-copilo...8 people-with-zoom-# platform-team# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the Deople of iimi...ProtllesWindow& platform-inner-...& 10MessagesChannel OverviewMoreYesterdayjinnylaop Aor 22nd Added by GitHubNikolay Ivanov 3:24 PMнякой нещо да е настроивал по githubactions. Почна да прави къмити вместо менбез да съм му разрешевал?https:/github.com/lminnv/app/pull/1200//changes/a68f42f210859f838a4fdced451f750627besoioИли нещо аз не разбирам?0AA0e 20 replies Last reply 18...Nikolay Yankov 3:50PMreplied to a uhread: някои нешо ла е насто..лол. ами предлагам маи ла му заораним лапускам към всички ла вилятNikolav Yankov 9.38 AMЩе се забавя за дейлито. Започнете без Мен.Aneliva Angelova 9:43 AMIДобро утро, няма да успея да вляза влейлито. Пествам ньлжовете.Message & platform-inner-team+ Aa I..•) New TabAl reports promotion pages by nik• JY-9712 | Nuges to expire after on8 Jiminnyu Userpilot Logged-activityJY-20157 add not enough activ XPipelines - jiminny/app+ New Tab©github.com/jimjiminny / app 8<> Code87 Pull requests 31( Agents |© Actions•• Wiki © Security and quality 32 ~ Insights 3 Settings@ On April 24 we'll start using GitHub Copilot interaction data for Al model training unless you opt out. Review this update and manage your preferences in your GitHub account settings.JY-20157 add not enough activities notification #12011 •$1 Open LakyLak wants to merge 2 commits into master from JY-20157-AJ-report-not-send-notification@) Conversation o• Commits 2|- Checks 21E Files changed 13A © All commits +Q Filter files...apo/Console/Commands/Reports/AutomatedReportsCommand.ohp@ -61,21 +61,29 @ public function handle(): intv = Console/Commands/Renorts|Snow = Carbon: : now();E AutomatedReportsCommand...v Jobs/AutomatedReportsE RequestGenerateAskJiminnyR...SendReportNotGeneratedMail...v @ Listeners/AutomatedReports/U….E TrackAutomatedReportGener...v # Mail/ReportsS1sMondav = Snow->1SMonday)S1sr1rstDayUtMonth = Snow->day === 1;ScurrentMonth = Snow->month.// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [+ ReportNotGenerated.ohp |"1SMonday' => S1SMonday,~ E Services/Kiosk/AutomatedRepo…..AskJiminnyReportActivityServ…'isFirstDay0fMonth' => SisFirstDay0fMonth,'currentMonth' => ScurrentMonth.E AutomatedReportsService.php'isQuarterlyMonth' => SisQuarterlyMonth,~E resources/views/emails/reportsreport-not-generated.blade.php/I Process dailv revortsl• F tests/UnitSthis->processReports(AutomatedReportsService::FREQUENCYDAILY):~ Jobs/AutomatedReportsE ReguestGenerateAsk JiminnvR....v = listeners/AutomatedRenorts/U.₴ TrackAutomatedReportGener..v E Services/Kiosk/AutomatedRepo…..E AskJiminnyReportActivityServ....AutomatedReportsServiceActi…./ Process weekly renorts on Mondavcif (SisMondav) {64 +67 +74 +86 +@40@ Daily - Platform - nowQ Type to search100% C4 8• Fri 24 Apr 9:46:13• Checks pending Code • (Preview) -+384 -52 9000C 0 I 13 viewedSubmit review+10 -2 mane [ Viewed0 ...Snow = Carhon:.nowdSisMondav = Snow->1SMonday)"Sisweekend = $now->isWeekend():SisFirstDay0fMonth = Snow->day === 1;ScurrentMonth = Snow->month.SisManualTrigger = $this->option('report-id') !== null;// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);Sthis->loager->info(self::L0G PREFIX . ' Checkina conditions'. [I"isMonday' => SisMonday,'isweekend' => $isWeekend,'isFirstDay0fMonth' => $isFirstDay0fMonth,'currentMonth' => ScurrentMonth.l'isQuarterlyMonth' => SisQuarterlyMonth,/ Process dailv renorts on weekdavs onlv (skio Saturdav/Sundav)...// Manual triggers via --report-id bypass the weekend skip.if (I Sisweekend || SisManualTriager) {Sthis->processReports(AutomatedReportsService::FREQUENCY_DAILY):} else {ISthis->logger->info(self::L0G PREFIX . ' Skipping daily reports on weekend'):/ Process weekly renorts on Mondavslif (SisMonday) {...
|
76654
|
|
76655
|
NULL
|
0
|
2026-04-24T08:14:41.169865+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777018481169_m1.jpg...
|
Slack
|
Aneliya Angelova, Nikolay Yankov, Steliyan Georgie Aneliya Angelova, Nikolay Yankov, Steliyan Georgiev (DM) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:11:46 AM
10:11 AM
но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък
Aneliya Angelova
Yesterday at 10:13:21 AM
10:13 AM
Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент
Lukas Kovalik
Yesterday at 10:13:47 AM
10:13 AM
да, ами добре ще ги сменя, на старите репорти
(edited)
Aneliya Angelova
Yesterday at 10:14:00 AM
10:14 AM
оки
Yesterday at 10:15:09 AM
10:15
тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Yesterday at 1:31:46 PM
1:31 PM
какво значи които са пратени?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Yesterday at 1:32:17 PM
1:32
по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Yesterday at 1:35:32 PM
1:35 PM
да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика
(edited)
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
New
Aneliya Angelova
Today at 11:13:41 AM
11:13 AM
Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Adelina Petrova, Direct Message, 1 of 7 suggestions
Aneliya Angelova is typing...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":21,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:11:46 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:11 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък","depth":23,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:13:21 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент","depth":23,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:13:47 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"да, ами добре ще ги сменя, на старите репорти","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:14:00 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:14 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"оки","depth":23,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:15:09 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:15","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега","depth":23,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 10:47:31 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:47 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:31:46 PM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:31 PM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"какво значи които са пратени?","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Yesterday at 1:32:17 PM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:32","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 1:35:32 PM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:35 PM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":21,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":21,"role_description":"text"},{"role":"AXButton","text":"Aneliya Angelova","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":22,"role_description":"text"},{"role":"AXLink","text":"Today at 11:13:41 AM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:13 AM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.","depth":23,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":24,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova is typing","depth":11,"role_description":"text"}]...
|
1670537004428059730
|
-3586248960455719342
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Yesterday at 10:11:46 AM
10:11 AM
но реално ако искаме ретроспективно да пуснем нещо седмично което не е минало в сряда ще е от среяда до четвъртък
Aneliya Angelova
Yesterday at 10:13:21 AM
10:13 AM
Галя казва, че по скоро иска винаги да се пускат от понеделник до неделя, за да може да има бекъп вариант ако трябва по някаква причина ръчно да се рерънне седмичен репорт на клиент
Lukas Kovalik
Yesterday at 10:13:47 AM
10:13 AM
да, ами добре ще ги сменя, на старите репорти
(edited)
Aneliya Angelova
Yesterday at 10:14:00 AM
10:14 AM
оки
Yesterday at 10:15:09 AM
10:15
тайтъла на репорта и Data Source секцията ще показват правилния период нали - понеже това се разминаваше до сега
Lukas Kovalik
Yesterday at 10:47:31 AM
10:47 AM
сега забелязах че стария count който се ползва в при контрол на достъп canAccessAiReport брои само ресултати който са пратени, не тези които са генерирани
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Nikolay Yankov
Yesterday at 1:31:46 PM
1:31 PM
какво значи които са пратени?
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Yesterday at 1:32:17 PM
1:32
по принцип условието беше - ако за user-a има генерирано и може да го гледа на ai-reports страницата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Yesterday at 1:35:32 PM
1:35 PM
да, говоря за нещо още от преди, count който се гледа дали има user право да гледа ai-reports страница , брои пратени не тези който са генерирани само. Реално ако се праща всичко на ред почти няма да се вижда разлика
(edited)
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Jump to date
New
Aneliya Angelova
Today at 11:13:41 AM
11:13 AM
Лукаш вчера генерирах 3 седмични репорта на. Галя на prod us. Обаче не ги пуснах по емейл и тази сутрин ги е получила по мейл.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Adelina Petrova, Direct Message, 1 of 7 suggestions
Aneliya Angelova is typing
Firefox• 0FileEditViewHistory→BookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com•Daily - Platform - now100% K78 • Fri 24 Apr 9:46:13|=Pop out this videoNikolay NikolovStefka StoyanovaGalya DimitrovaLukas Kovalik9:46 AM | Daily - Platform• 0:27...
|
NULL
|
|
76579
|
NULL
|
0
|
2026-04-24T08:09:36.358028+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777018176358_m2.jpg...
|
Firefox
|
[JY-20543] AJ Reports > Tracking - Jira — Work
|
True
|
jiminny.atlassian.net/browse/JY-20543?search_id=f4 jiminny.atlassian.net/browse/JY-20543?search_id=f484c0ee-9edf-42e1-8cff-52c73f5b3a7e&referrer=quick-find...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
[JY-20543] AJ Reports > Tracking - Jira
JY-2048 [JY-20543] AJ Reports > Tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
Pull requests · jiminny/app
Pull requests · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
tracking
tracking
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-20543
JY-20543
Copy link
AJ Reports > Tracking- Summary, edit
AJ Reports > Tracking
AJ Reports > Tracking
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to be able to track the usage of the
AJ
reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.
track each generated reports in
DD
- include company name and frequency
for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report
for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list
note: for UP you can see how we currently track events such as Logged-activity, Held-conference
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Collapse Activity Activity
Collapse Activity
Collapse Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Atlassian Intelligence Summarise
Summarise
Newest first Newest first
Newest first
Add a comment…
Suggest a reply...
Suggest a reply...
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:41
BE: 1 d
Reply
Add thumbs up reaction
Add reaction
Edit
More actions
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:38
Where
public function pushToDatadog
- push to
UserPilot 1 entry for the creator
Reply...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.23703113,"width":0.16356383,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.07679521,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.367917,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.32130983,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.32130983,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.32130983,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.32130983,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.32130983,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.32130983,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.32130983,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.3146609,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.31981382,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.32662898,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.33178192,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.33992687,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"tracking","depth":11,"bounds":{"left":0.52011305,"top":0.06264964,"width":0.24268617,"height":0.015961692},"value":"tracking","help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"tracking","depth":12,"bounds":{"left":0.52011305,"top":0.06384677,"width":0.017785905,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":10,"bounds":{"left":0.77111036,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.78241354,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.9119016,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.9232048,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 Notification","depth":12,"bounds":{"left":0.94913566,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Notification","depth":14,"bounds":{"left":0.95428854,"top":0.06344773,"width":0.028590426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96110374,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9662567,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9730718,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97822475,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.9850399,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99019283,"top":0.06344773,"width":0.009807169,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.3146609,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.3252992,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"bounds":{"left":0.3146609,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.3252992,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"bounds":{"left":0.3146609,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.3252992,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.3146609,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.3252992,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.38414228,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.3146609,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.3252992,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.36751994,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.37682846,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.32064494,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.31865028,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.32928857,"top":0.25897846,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.31998006,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.36751994,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.37682846,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"bounds":{"left":0.3226396,"top":0.27853152,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"bounds":{"left":0.3332779,"top":0.28451717,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.38414228,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"bounds":{"left":0.3226396,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"bounds":{"left":0.3332779,"top":0.31005585,"width":0.024102394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.38414228,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"bounds":{"left":0.3226396,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"bounds":{"left":0.3332779,"top":0.33559456,"width":0.03125,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.38414228,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"bounds":{"left":0.3226396,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"bounds":{"left":0.3332779,"top":0.36113328,"width":0.050531916,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.38414228,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"bounds":{"left":0.3226396,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"bounds":{"left":0.3332779,"top":0.386672,"width":0.038231384,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.38414228,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.31865028,"top":0.40622506,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.32928857,"top":0.4122107,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.3854721,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"bounds":{"left":0.31865028,"top":0.43176377,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"bounds":{"left":0.32928857,"top":0.43774942,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"bounds":{"left":0.3146609,"top":0.45730248,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"bounds":{"left":0.3252992,"top":0.4632881,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.38414228,"top":0.46049482,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"bounds":{"left":0.3146609,"top":0.4828412,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"bounds":{"left":0.3252992,"top":0.4888268,"width":0.026761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"bounds":{"left":0.38613698,"top":0.48603353,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"bounds":{"left":0.3934508,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"bounds":{"left":0.3146609,"top":0.5083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"bounds":{"left":0.3252992,"top":0.5143655,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"bounds":{"left":0.38414228,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"bounds":{"left":0.3146609,"top":0.5434956,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"bounds":{"left":0.3252992,"top":0.5494813,"width":0.025764627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.3146609,"top":0.55706304,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"bounds":{"left":0.3146609,"top":0.56903434,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"bounds":{"left":0.3252992,"top":0.57501996,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.3146609,"top":0.5826017,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"bounds":{"left":0.37483376,"top":0.57222664,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"bounds":{"left":0.3146609,"top":0.60415006,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"bounds":{"left":0.3252992,"top":0.6101357,"width":0.04155585,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"bounds":{"left":0.44198802,"top":0.0981644,"width":0.062333778,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":15,"bounds":{"left":0.40242687,"top":0.10933759,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":17,"bounds":{"left":0.40242687,"top":0.11292897,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.41821808,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":15,"bounds":{"left":0.42370346,"top":0.10933759,"width":0.034574468,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":17,"bounds":{"left":0.43101728,"top":0.11292897,"width":0.027260639,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.46010637,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":15,"bounds":{"left":0.4635971,"top":0.10933759,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-19240","depth":15,"bounds":{"left":0.4715758,"top":0.10933759,"width":0.017952127,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19240","depth":17,"bounds":{"left":0.4715758,"top":0.11292897,"width":0.017952127,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.49135637,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":15,"bounds":{"left":0.4948471,"top":0.10933759,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-20543","depth":15,"bounds":{"left":0.5028258,"top":0.10933759,"width":0.018783245,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543","depth":17,"bounds":{"left":0.5028258,"top":0.11292897,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"bounds":{"left":0.5202792,"top":0.11213089,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AJ Reports > Tracking- Summary, edit","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AJ Reports > Tracking","depth":11,"bounds":{"left":0.40309176,"top":0.1396648,"width":0.0831117,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ Reports > Tracking","depth":12,"bounds":{"left":0.40309176,"top":0.13926576,"width":0.0831117,"height":0.023543496},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":12,"bounds":{"left":0.40242687,"top":0.17158818,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":12,"bounds":{"left":0.41572472,"top":0.17158818,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":11,"bounds":{"left":0.39444813,"top":0.20989625,"width":0.4537899,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":13,"bounds":{"left":0.39311835,"top":0.21308859,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":14,"bounds":{"left":0.40242687,"top":0.2150838,"width":0.029587766,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"We want to be able to track the usage of the","depth":14,"bounds":{"left":0.40309176,"top":0.23982441,"width":0.09857048,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ","depth":15,"bounds":{"left":0.50166225,"top":0.23982441,"width":0.005817819,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.","depth":14,"bounds":{"left":0.50748,"top":0.23982441,"width":0.28773272,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"track each generated reports in","depth":16,"bounds":{"left":0.41107047,"top":0.26855546,"width":0.07047872,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DD","depth":17,"bounds":{"left":0.4815492,"top":0.26855546,"width":0.0068151597,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- include company name and frequency","depth":16,"bounds":{"left":0.48836437,"top":0.26855546,"width":0.08892952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report","depth":16,"bounds":{"left":0.41107047,"top":0.29090184,"width":0.29388297,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list","depth":16,"bounds":{"left":0.41107047,"top":0.31324822,"width":0.24650931,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"note: for UP you can see how we currently track events such as Logged-activity, Held-conference","depth":14,"bounds":{"left":0.40309176,"top":0.34197924,"width":0.21575798,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Subtasks","depth":11,"bounds":{"left":0.40242687,"top":0.39984038,"width":0.023936171,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Subtasks","depth":12,"bounds":{"left":0.40242687,"top":0.40023944,"width":0.023936171,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add subtask","depth":12,"bounds":{"left":0.3984375,"top":0.42059058,"width":0.035405584,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add subtask","depth":14,"bounds":{"left":0.40242687,"top":0.42657623,"width":0.027426861,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Linked work items","depth":11,"bounds":{"left":0.40242687,"top":0.46528333,"width":0.04654255,"height":0.015961692},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Linked work items","depth":12,"bounds":{"left":0.40242687,"top":0.46568236,"width":0.04654255,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add linked work item","depth":12,"bounds":{"left":0.3984375,"top":0.48443735,"width":0.05418883,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add linked work item","depth":14,"bounds":{"left":0.40242687,"top":0.490423,"width":0.046210106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Activity Activity","depth":12,"bounds":{"left":0.39444813,"top":0.5291301,"width":0.4537899,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Activity","depth":14,"bounds":{"left":0.39311835,"top":0.5323224,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Activity","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":15,"bounds":{"left":0.40242687,"top":0.5343176,"width":0.019946808,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All","depth":14,"bounds":{"left":0.4034242,"top":0.5602554,"width":0.01412899,"height":0.0207502},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":16,"bounds":{"left":0.40774602,"top":0.56384677,"width":0.005485372,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Comments","depth":14,"bounds":{"left":0.41821808,"top":0.5602554,"width":0.032413565,"height":0.0207502},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Comments","depth":16,"bounds":{"left":0.4225399,"top":0.56384677,"width":0.023769947,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"History","depth":14,"bounds":{"left":0.45129654,"top":0.5602554,"width":0.024268618,"height":0.0207502},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":16,"bounds":{"left":0.45561835,"top":0.56384677,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Work log","depth":14,"bounds":{"left":0.47623006,"top":0.5602554,"width":0.02825798,"height":0.0207502},"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Work log","depth":16,"bounds":{"left":0.48055187,"top":0.56384677,"width":0.019614361,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Atlassian Intelligence Summarise","depth":14,"bounds":{"left":0.829621,"top":0.5642458,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarise","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newest first Newest first","depth":13,"bounds":{"left":0.8402593,"top":0.5642458,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Newest first","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add a comment…","depth":15,"bounds":{"left":0.4163896,"top":0.60415006,"width":0.43118352,"height":0.07182761},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Suggest a reply...","depth":17,"bounds":{"left":0.42237368,"top":0.6424581,"width":0.046708778,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Suggest a reply...","depth":19,"bounds":{"left":0.42636302,"top":0.6452514,"width":0.03873005,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status update...","depth":17,"bounds":{"left":0.47041222,"top":0.6424581,"width":0.04305186,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status update...","depth":19,"bounds":{"left":0.4744016,"top":0.6452514,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Thanks...","depth":17,"bounds":{"left":0.5147939,"top":0.6424581,"width":0.028590426,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thanks...","depth":19,"bounds":{"left":0.5187833,"top":0.6452514,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pro tip:","depth":16,"bounds":{"left":0.41572472,"top":0.6843575,"width":0.013796543,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"press","depth":15,"bounds":{"left":0.42952126,"top":0.6843575,"width":0.012632979,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"M","depth":17,"bounds":{"left":0.44348404,"top":0.68515563,"width":0.0034906915,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to comment","depth":15,"bounds":{"left":0.44830453,"top":0.6843575,"width":0.023603724,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"More information about Nikolay Nikolov","depth":18,"bounds":{"left":0.42104387,"top":0.7067039,"width":0.034906916,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about Nikolay Nikolov","depth":20,"bounds":{"left":0.42104387,"top":0.7067039,"width":0.034906916,"height":0.019553073},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":21,"bounds":{"left":0.42104387,"top":0.71109337,"width":0.034906916,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link to comment","depth":18,"bounds":{"left":0.45728058,"top":0.7094972,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 March 2026 at 14:41","depth":19,"bounds":{"left":0.42104387,"top":0.72625697,"width":0.044215426,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BE: 1 d","depth":19,"bounds":{"left":0.42104387,"top":0.7509976,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Reply","depth":17,"bounds":{"left":0.42104387,"top":0.77693534,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Add thumbs up reaction","depth":17,"bounds":{"left":0.43168217,"top":0.77693534,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Add reaction","depth":17,"bounds":{"left":0.44232047,"top":0.77693534,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Edit","depth":17,"bounds":{"left":0.45295876,"top":0.77693534,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More actions","depth":17,"bounds":{"left":0.4635971,"top":0.77693534,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"More information about Nikolay Nikolov","depth":18,"bounds":{"left":0.42104387,"top":0.8184357,"width":0.034906916,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about Nikolay Nikolov","depth":20,"bounds":{"left":0.42104387,"top":0.8184357,"width":0.034906916,"height":0.019553073},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":21,"bounds":{"left":0.42104387,"top":0.8228252,"width":0.034906916,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link to comment","depth":18,"bounds":{"left":0.45728058,"top":0.82122904,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 March 2026 at 14:38","depth":19,"bounds":{"left":0.42104387,"top":0.83798885,"width":0.04504654,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Where","depth":19,"bounds":{"left":0.42104387,"top":0.86272943,"width":0.015791224,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function pushToDatadog","depth":20,"bounds":{"left":0.43799868,"top":0.8639266,"width":0.07081117,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- push to","depth":19,"bounds":{"left":0.51013964,"top":0.86272943,"width":0.02244016,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UserPilot 1 entry for the creator","depth":21,"bounds":{"left":0.4290226,"top":0.8850758,"width":0.06865027,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Reply","depth":17,"bounds":{"left":0.42104387,"top":0.91101354,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-5701469090799662515
|
1663338047592942286
|
click
|
accessibility
|
NULL
|
[JY-20543] AJ Reports > Tracking - Jira
JY-2048 [JY-20543] AJ Reports > Tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
Pull requests · jiminny/app
Pull requests · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
tracking
tracking
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-20543
JY-20543
Copy link
AJ Reports > Tracking- Summary, edit
AJ Reports > Tracking
AJ Reports > Tracking
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to be able to track the usage of the
AJ
reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.
track each generated reports in
DD
- include company name and frequency
for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report
for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list
note: for UP you can see how we currently track events such as Logged-activity, Held-conference
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Collapse Activity Activity
Collapse Activity
Collapse Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Atlassian Intelligence Summarise
Summarise
Newest first Newest first
Newest first
Add a comment…
Suggest a reply...
Suggest a reply...
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:41
BE: 1 d
Reply
Add thumbs up reaction
Add reaction
Edit
More actions
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:38
Where
public function pushToDatadog
- push to
UserPilot 1 entry for the creator
Reply...
|
NULL
|
|
76578
|
NULL
|
0
|
2026-04-24T08:09:36.229593+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777018176229_m1.jpg...
|
Firefox
|
[JY-20543] AJ Reports > Tracking - Jira — Work
|
True
|
jiminny.atlassian.net/browse/JY-20543?search_id=f4 jiminny.atlassian.net/browse/JY-20543?search_id=f484c0ee-9edf-42e1-8cff-52c73f5b3a7e&referrer=quick-find...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
[JY-20543] AJ Reports > Tracking - Jira
JY-2048 [JY-20543] AJ Reports > Tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
Pull requests · jiminny/app
Pull requests · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
tracking
tracking
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-20543
JY-20543
Copy link
AJ Reports > Tracking- Summary, edit
AJ Reports > Tracking
AJ Reports > Tracking
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to be able to track the usage of the
AJ
reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.
track each generated reports in
DD
- include company name and frequency
for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report
for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list
note: for UP you can see how we currently track events such as Logged-activity, Held-conference
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Collapse Activity Activity
Collapse Activity
Collapse Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Atlassian Intelligence Summarise
Summarise
Newest first Newest first
Newest first
Add a comment…
Suggest a reply...
Suggest a reply...
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:41
BE: 1 d
Reply
Add thumbs up reaction
Add reaction...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"tracking","depth":11,"value":"tracking","help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"tracking","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"1 Notification","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-19240","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19240","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-20543","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AJ Reports > Tracking- Summary, edit","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"AJ Reports > Tracking","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ Reports > Tracking","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"We want to be able to track the usage of the","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"track each generated reports in","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DD","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- include company name and frequency","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"note: for UP you can see how we currently track events such as Logged-activity, Held-conference","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Subtasks","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Subtasks","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add subtask","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add subtask","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Linked work items","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Linked work items","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add linked work item","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add linked work item","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Activity Activity","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Activity","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Activity","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All","depth":14,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Comments","depth":14,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Comments","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"History","depth":14,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Work log","depth":14,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Work log","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Atlassian Intelligence Summarise","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarise","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newest first Newest first","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Newest first","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add a comment…","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Suggest a reply...","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Suggest a reply...","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status update...","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status update...","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Thanks...","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thanks...","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pro tip:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"press","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"M","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to comment","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"More information about Nikolay Nikolov","depth":18,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More information about Nikolay Nikolov","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link to comment","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 March 2026 at 14:41","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BE: 1 d","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Reply","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Add thumbs up reaction","depth":17,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Add reaction","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3256029897040732127
|
1662212697442966222
|
click
|
accessibility
|
NULL
|
[JY-20543] AJ Reports > Tracking - Jira
JY-2048 [JY-20543] AJ Reports > Tracking - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
Pull requests · jiminny/app
Pull requests · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
tracking
tracking
Create
Create
Rovo Ask Rovo
Ask Rovo
1 Notification
1 Notification
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-20543
JY-20543
Copy link
AJ Reports > Tracking- Summary, edit
AJ Reports > Tracking
AJ Reports > Tracking
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to be able to track the usage of the
AJ
reports. We will use this to keep track of the adoption but also to use Userpilot tooltips to push users who are not using it to use it.
track each generated reports in
DD
- include company name and frequency
for AJ reports - track each generated report in UserPilot as an event on the user - track it only for the user who has created the report
for Exec reports - track each generated report - set the tracking for each user in the non-jiminny participants list
note: for UP you can see how we currently track events such as Logged-activity, Held-conference
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Collapse Activity Activity
Collapse Activity
Collapse Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Atlassian Intelligence Summarise
Summarise
Newest first Newest first
Newest first
Add a comment…
Suggest a reply...
Suggest a reply...
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
More information about Nikolay Nikolov
More information about Nikolay Nikolov
Nikolay Nikolov
Copy link to comment
30 March 2026 at 14:41
BE: 1 d
Reply
Add thumbs up reaction
Add reaction...
|
NULL
|
|
76508
|
NULL
|
0
|
2026-04-24T08:04:02.935591+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017842935_m2.jpg...
|
Firefox
|
Inbox - kovaliklukas@gmail.com - Gmail — Personal
|
True
|
mail.google.com/mail/u/0/#inbox
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(67) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Mute tab
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Inbox - [EMAIL] - Gmail
Inbox - [EMAIL] - Gmail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
None selected
Skip to content
Skip to content
Using Gmail with screen readers
Using Gmail with screen readers
Main menu
Gmail
Search
Search
Search mail
Advanced search options
Search mail
Support
Settings
Ask Gemini
Google apps
Google Account: Lukáš Koválik ([EMAIL]), Storage usage alert
Compose
Labels
Labels
Inbox
Inbox
Starred
Starred
Snoozed
Snoozed
Important
Important
Sent
Sent
Drafts 7 unread
Drafts
7
Purchases has menu
Purchases
Social 5165 unread has menu
Social
5,165
Updates 8687 unread has menu
Updates
8,687
Forums 6048 unread has menu
Forums
6,048
Promotions 38629 unread has menu
Promotions
38,629
More labels
More
Labels
Labels
Create new label
Labels
Labels
[Imap]/Nevyžiadaná pošta has menu
[Imap]/Nevyžiadaná pošta
arch has menu
arch
Deleted Items has menu
Deleted Items
Fibank 1229 unread has menu
Fibank
1,229
FL 6 unread has menu
FL
6
Hardware & Software has menu
Hardware & Software
HOSTING 5 unread has menu
HOSTING
5
Infected Items has menu
Infected Items
jiminny-github 7421 unread has menu
jiminny-github
7,421
Junk E-mail 219 unread has menu
Junk E-mail
219
Kontakty has menu
Kontakty
Sent Items has menu
Sent Items
WORK 848 unread has menu
WORK
848
z centra 1274 unread has menu
z centra
1,274
More labels
More
Select
Refresh
More email options
Show more messages
1
–
50
of
21,145
Newer
Older
Toggle split pane mode
Input tools on/off (Ctrl-Shift-K)
Select input tool
Conversations
Conversations
Primary
Primary
Promotions, 50 new messages,
50 new
Promotions
Social, 25 new messages,
25 new
Social
Updates
Updates
Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.
Not starred
Important because it matched one of your importance filters.
Notion Team
Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Get a first look at our developer tools
-
Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
10:45
CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.
Not starred
Not important
CircleCI Builds
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification
-
app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
10:40
imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.
Not starred
Not important
imot.bg
Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
Известяване за промяна в цена от imot.bg
-
Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.26961437,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(67) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.30618352,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.20844415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.2443484,"top":0.23703113,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"rescue time detailed overview - Google Search","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.08128324,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.23105054,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.2443484,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.23105054,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.2443484,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.23105054,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.2443484,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube","depth":4,"bounds":{"left":0.23105054,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Mute tab","depth":5,"bounds":{"left":0.24251994,"top":0.49481246,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube","depth":5,"bounds":{"left":0.25116357,"top":0.49880287,"width":0.14394946,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.23105054,"top":0.5203512,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.2443484,"top":0.53152436,"width":0.06898271,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3324468,"top":0.5275339,"width":0.007978723,"height":0.01915403},"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.23387633,"top":0.5546688,"width":0.108211435,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"None selected","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Skip to content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Using Gmail with screen readers","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Using Gmail with screen readers","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Main menu","depth":11,"bounds":{"left":0.3487367,"top":0.058260176,"width":0.015957447,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Gmail","depth":12,"bounds":{"left":0.36602393,"top":0.061452515,"width":0.036236703,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Search","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search mail","depth":18,"bounds":{"left":0.4481383,"top":0.06943336,"width":0.18916224,"height":0.016360734},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Advanced search options","depth":12,"bounds":{"left":0.6505984,"top":0.058260176,"width":0.01861702,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search mail","depth":12,"bounds":{"left":0.42985374,"top":0.058260176,"width":0.01861702,"height":0.03671189},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Support","depth":13,"bounds":{"left":0.92353725,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Settings","depth":13,"bounds":{"left":0.9381649,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Gemini","depth":13,"bounds":{"left":0.95212764,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google apps","depth":14,"bounds":{"left":0.96609044,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com), Storage usage alert","depth":14,"bounds":{"left":0.98204786,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compose","depth":9,"bounds":{"left":0.34740692,"top":0.10933759,"width":0.04737367,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Inbox","depth":16,"bounds":{"left":0.36602393,"top":0.15003991,"width":0.012466756,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox","depth":17,"bounds":{"left":0.36602393,"top":0.15003991,"width":0.012466756,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Starred","depth":17,"bounds":{"left":0.36602393,"top":0.16919394,"width":0.015625,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Starred","depth":18,"bounds":{"left":0.36602393,"top":0.16919394,"width":0.015625,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Snoozed","depth":17,"bounds":{"left":0.36602393,"top":0.18834797,"width":0.018284574,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Snoozed","depth":18,"bounds":{"left":0.36602393,"top":0.18834797,"width":0.018284574,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Important","depth":17,"bounds":{"left":0.36602393,"top":0.207502,"width":0.020777926,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Important","depth":18,"bounds":{"left":0.36602393,"top":0.207502,"width":0.020777926,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sent","depth":17,"bounds":{"left":0.36602393,"top":0.22665602,"width":0.009640957,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sent","depth":18,"bounds":{"left":0.36602393,"top":0.22665602,"width":0.009640957,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Drafts 7 unread","depth":17,"bounds":{"left":0.36602393,"top":0.24581006,"width":0.013796543,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drafts","depth":18,"bounds":{"left":0.36602393,"top":0.24581006,"width":0.013796543,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":17,"bounds":{"left":0.41988033,"top":0.24700718,"width":0.0019946808,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Purchases has menu","depth":16,"bounds":{"left":0.36602393,"top":0.26496407,"width":0.021941489,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Purchases","depth":17,"bounds":{"left":0.36602393,"top":0.26496407,"width":0.021941489,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Social 5165 unread has menu","depth":16,"bounds":{"left":0.36602393,"top":0.28411812,"width":0.013796543,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Social","depth":17,"bounds":{"left":0.36602393,"top":0.28411812,"width":0.013796543,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5,165","depth":16,"bounds":{"left":0.41273272,"top":0.28531525,"width":0.009142287,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Updates 8687 unread has menu","depth":16,"bounds":{"left":0.36602393,"top":0.30327216,"width":0.018949468,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Updates","depth":17,"bounds":{"left":0.36602393,"top":0.30327216,"width":0.018949468,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8,687","depth":16,"bounds":{"left":0.41223404,"top":0.3044693,"width":0.009640957,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forums 6048 unread has menu","depth":16,"bounds":{"left":0.36602393,"top":0.32242617,"width":0.016788565,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forums","depth":17,"bounds":{"left":0.36602393,"top":0.32242617,"width":0.016788565,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6,048","depth":16,"bounds":{"left":0.4114029,"top":0.3236233,"width":0.010472074,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Promotions 38629 unread has menu","depth":16,"bounds":{"left":0.36602393,"top":0.3415802,"width":0.025930852,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Promotions","depth":17,"bounds":{"left":0.36602393,"top":0.3415802,"width":0.025930852,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"38,629","depth":16,"bounds":{"left":0.40990692,"top":0.34277734,"width":0.011968086,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More labels","depth":12,"bounds":{"left":0.34474733,"top":0.35834,"width":0.07978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More","depth":14,"bounds":{"left":0.36602393,"top":0.36073422,"width":0.010804521,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Labels","depth":11,"bounds":{"left":0.35339096,"top":0.39984038,"width":0.061835106,"height":0.016360734},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":12,"bounds":{"left":0.35339096,"top":0.39984038,"width":0.016456118,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create new label","depth":11,"bounds":{"left":0.41522607,"top":0.40023944,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[Imap]/Nevyžiadaná pošta has menu","depth":17,"bounds":{"left":0.36602393,"top":0.42817238,"width":0.055352394,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Imap]/Nevyžiadaná pošta","depth":18,"bounds":{"left":0.36602393,"top":0.42817238,"width":0.055352394,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"arch has menu","depth":17,"bounds":{"left":0.36602393,"top":0.44732642,"width":0.009474734,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"arch","depth":18,"bounds":{"left":0.36602393,"top":0.44732642,"width":0.009474734,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deleted Items has menu","depth":17,"bounds":{"left":0.36602393,"top":0.46648043,"width":0.029089095,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deleted Items","depth":18,"bounds":{"left":0.36602393,"top":0.46648043,"width":0.029089095,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fibank 1229 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.48563448,"width":0.01512633,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fibank","depth":18,"bounds":{"left":0.36602393,"top":0.48563448,"width":0.01512633,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,229","depth":17,"bounds":{"left":0.41273272,"top":0.4868316,"width":0.009142287,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FL 6 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.5047885,"width":0.005319149,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FL","depth":18,"bounds":{"left":0.36602393,"top":0.5047885,"width":0.005319149,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":17,"bounds":{"left":0.4195479,"top":0.5059856,"width":0.0023271276,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hardware & Software has menu","depth":17,"bounds":{"left":0.36602393,"top":0.52394253,"width":0.044714097,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hardware & Software","depth":18,"bounds":{"left":0.36602393,"top":0.52394253,"width":0.044714097,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HOSTING 5 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.54309654,"width":0.02144282,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HOSTING","depth":18,"bounds":{"left":0.36602393,"top":0.54309654,"width":0.02144282,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"bounds":{"left":0.4197141,"top":0.5442937,"width":0.0021609042,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Infected Items has menu","depth":17,"bounds":{"left":0.36602393,"top":0.5622506,"width":0.030086435,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Infected Items","depth":18,"bounds":{"left":0.36602393,"top":0.5622506,"width":0.030086435,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"jiminny-github 7421 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.5814046,"width":0.03324468,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny-github","depth":18,"bounds":{"left":0.36602393,"top":0.5814046,"width":0.03324468,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7,421","depth":17,"bounds":{"left":0.41323137,"top":0.5826017,"width":0.008643617,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Junk E-mail 219 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.60055864,"width":0.026761968,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Junk E-mail","depth":18,"bounds":{"left":0.36602393,"top":0.60055864,"width":0.026761968,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"219","depth":17,"bounds":{"left":0.41589096,"top":0.6017558,"width":0.005984043,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kontakty has menu","depth":17,"bounds":{"left":0.36602393,"top":0.6197127,"width":0.018450798,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kontakty","depth":18,"bounds":{"left":0.36602393,"top":0.6197127,"width":0.018450798,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sent Items has menu","depth":17,"bounds":{"left":0.36602393,"top":0.6388667,"width":0.022273935,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sent Items","depth":18,"bounds":{"left":0.36602393,"top":0.6388667,"width":0.022273935,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"WORK 848 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.65802073,"width":0.014461436,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"WORK","depth":18,"bounds":{"left":0.36602393,"top":0.65802073,"width":0.014461436,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"848","depth":17,"bounds":{"left":0.41522607,"top":0.6592179,"width":0.0066489363,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"z centra 1274 unread has menu","depth":17,"bounds":{"left":0.36602393,"top":0.6771748,"width":0.018118352,"height":0.014764565},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"z centra","depth":18,"bounds":{"left":0.36602393,"top":0.6771748,"width":0.018118352,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,274","depth":17,"bounds":{"left":0.41306517,"top":0.6783719,"width":0.00880984,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More labels","depth":12,"bounds":{"left":0.34474733,"top":0.69393456,"width":0.07978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More","depth":14,"bounds":{"left":0.36602393,"top":0.6963288,"width":0.010804521,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Select","depth":12,"bounds":{"left":0.4351729,"top":0.11412609,"width":0.013297873,"height":0.015961692},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Refresh","depth":12,"bounds":{"left":0.45511967,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More email options","depth":12,"bounds":{"left":0.46841756,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show more messages","depth":13,"bounds":{"left":0.87732714,"top":0.10774142,"width":0.030917553,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":15,"bounds":{"left":0.8799867,"top":0.11612131,"width":0.0016622341,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"–","depth":15,"bounds":{"left":0.88164896,"top":0.11612131,"width":0.002493351,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50","depth":15,"bounds":{"left":0.8841423,"top":0.11612131,"width":0.0048204786,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of","depth":15,"bounds":{"left":0.88896275,"top":0.11612131,"width":0.005817819,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21,145","depth":15,"bounds":{"left":0.8947806,"top":0.11612131,"width":0.010804521,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newer","depth":13,"bounds":{"left":0.91223407,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Older","depth":13,"bounds":{"left":0.9255319,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Toggle split pane mode","depth":12,"bounds":{"left":0.9388298,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Input tools on/off (Ctrl-Shift-K)","depth":14,"bounds":{"left":0.9574468,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Select input tool","depth":14,"bounds":{"left":0.9640958,"top":0.11412609,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversations","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversations","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Primary","depth":15,"bounds":{"left":0.42985374,"top":0.14126097,"width":0.084109046,"height":0.03830806},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Primary","depth":19,"bounds":{"left":0.44714096,"top":0.1528332,"width":0.016954787,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Promotions, 50 new messages,","depth":15,"bounds":{"left":0.51396275,"top":0.14126097,"width":0.084109046,"height":0.03830806},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50 new","depth":19,"bounds":{"left":0.56017286,"top":0.15403032,"width":0.013630319,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Promotions","depth":19,"bounds":{"left":0.53125,"top":0.1528332,"width":0.024933511,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Social, 25 new messages,","depth":15,"bounds":{"left":0.5980718,"top":0.14126097,"width":0.084109046,"height":0.03830806},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25 new","depth":19,"bounds":{"left":0.63248,"top":0.15403032,"width":0.013297873,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Social","depth":19,"bounds":{"left":0.61535907,"top":0.1528332,"width":0.013131649,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Updates","depth":15,"bounds":{"left":0.6821808,"top":0.14126097,"width":0.084109046,"height":0.03830806},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Updates","depth":19,"bounds":{"left":0.6994681,"top":0.1528332,"width":0.018284574,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.","depth":18,"bounds":{"left":0.4351729,"top":0.18276137,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"bounds":{"left":0.44514626,"top":0.18276137,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Important because it matched one of your importance filters.","depth":18,"bounds":{"left":0.45511967,"top":0.18276137,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notion Team","depth":20,"bounds":{"left":0.46509308,"top":0.18355946,"width":0.026595745,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏","depth":18,"bounds":{"left":0.5315825,"top":0.18276137,"width":0.41323137,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get a first look at our developer tools","depth":22,"bounds":{"left":0.5315825,"top":0.18355946,"width":0.078125,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"bounds":{"left":0.6097075,"top":0.18355946,"width":0.004488032,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏","depth":21,"bounds":{"left":0.61419547,"top":0.18355946,"width":0.18417554,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:45","depth":19,"bounds":{"left":0.9662567,"top":0.18475658,"width":0.009807181,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.","depth":18,"bounds":{"left":0.4351729,"top":0.20510775,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"bounds":{"left":0.44514626,"top":0.20510775,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Not important","depth":18,"bounds":{"left":0.45511967,"top":0.20510775,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CircleCI Builds","depth":20,"bounds":{"left":0.46509308,"top":0.20590582,"width":0.030418882,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to","depth":18,"bounds":{"left":0.5315825,"top":0.20510775,"width":0.41323137,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification","depth":22,"bounds":{"left":0.5315825,"top":0.20590582,"width":0.18783244,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"bounds":{"left":0.7194149,"top":0.20590582,"width":0.004488032,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to","depth":21,"bounds":{"left":0.72390294,"top":0.20590582,"width":0.27609706,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:40","depth":19,"bounds":{"left":0.96575797,"top":0.20710295,"width":0.010305851,"height":0.012370312},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.","depth":18,"bounds":{"left":0.4351729,"top":0.22745411,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"bounds":{"left":0.44514626,"top":0.22745411,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Not important","depth":18,"bounds":{"left":0.45511967,"top":0.22745411,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"imot.bg","depth":20,"bounds":{"left":0.46509308,"top":0.22825219,"width":0.015957447,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено","depth":18,"bounds":{"left":0.5315825,"top":0.22745411,"width":0.41323137,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Известяване за промяна в цена от imot.bg","depth":22,"bounds":{"left":0.5315825,"top":0.22825219,"width":0.092586435,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"bounds":{"left":0.6241689,"top":0.22825219,"width":0.004488032,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено","depth":21,"bounds":{"left":0.6286569,"top":0.22825219,"width":0.37134308,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
291121732012838241
|
-9171883464535172399
|
idle
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(67) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Mute tab
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Inbox - [EMAIL] - Gmail
Inbox - [EMAIL] - Gmail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
None selected
Skip to content
Skip to content
Using Gmail with screen readers
Using Gmail with screen readers
Main menu
Gmail
Search
Search
Search mail
Advanced search options
Search mail
Support
Settings
Ask Gemini
Google apps
Google Account: Lukáš Koválik ([EMAIL]), Storage usage alert
Compose
Labels
Labels
Inbox
Inbox
Starred
Starred
Snoozed
Snoozed
Important
Important
Sent
Sent
Drafts 7 unread
Drafts
7
Purchases has menu
Purchases
Social 5165 unread has menu
Social
5,165
Updates 8687 unread has menu
Updates
8,687
Forums 6048 unread has menu
Forums
6,048
Promotions 38629 unread has menu
Promotions
38,629
More labels
More
Labels
Labels
Create new label
Labels
Labels
[Imap]/Nevyžiadaná pošta has menu
[Imap]/Nevyžiadaná pošta
arch has menu
arch
Deleted Items has menu
Deleted Items
Fibank 1229 unread has menu
Fibank
1,229
FL 6 unread has menu
FL
6
Hardware & Software has menu
Hardware & Software
HOSTING 5 unread has menu
HOSTING
5
Infected Items has menu
Infected Items
jiminny-github 7421 unread has menu
jiminny-github
7,421
Junk E-mail 219 unread has menu
Junk E-mail
219
Kontakty has menu
Kontakty
Sent Items has menu
Sent Items
WORK 848 unread has menu
WORK
848
z centra 1274 unread has menu
z centra
1,274
More labels
More
Select
Refresh
More email options
Show more messages
1
–
50
of
21,145
Newer
Older
Toggle split pane mode
Input tools on/off (Ctrl-Shift-K)
Select input tool
Conversations
Conversations
Primary
Primary
Promotions, 50 new messages,
50 new
Promotions
Social, 25 new messages,
25 new
Social
Updates
Updates
Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.
Not starred
Important because it matched one of your importance filters.
Notion Team
Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Get a first look at our developer tools
-
Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
10:45
CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.
Not starred
Not important
CircleCI Builds
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification
-
app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
10:40
imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.
Not starred
Not important
imot.bg
Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
Известяване за промяна в цена от imot.bg
-
Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено...
|
76506
|
|
76507
|
NULL
|
0
|
2026-04-24T08:04:02.676930+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017842676_m1.jpg...
|
Firefox
|
Inbox - kovaliklukas@gmail.com - Gmail — Personal
|
True
|
mail.google.com/mail/u/0/#inbox
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(67) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Mute tab
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Inbox - [EMAIL] - Gmail
Inbox - [EMAIL] - Gmail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
None selected
Skip to content
Skip to content
Using Gmail with screen readers
Using Gmail with screen readers
Main menu
Gmail
Search
Search
Search mail
Advanced search options
Search mail
Support
Settings
Ask Gemini
Google apps
Google Account: Lukáš Koválik ([EMAIL]), Storage usage alert
Compose
Labels
Labels
Inbox
Inbox
Starred
Starred
Snoozed
Snoozed
Important
Important
Sent
Sent
Drafts 7 unread
Drafts
7
Purchases has menu
Purchases
Social 5165 unread has menu
Social
5,165
Updates 8687 unread has menu
Updates
8,687
Forums 6048 unread has menu
Forums
6,048
Promotions 38629 unread has menu
Promotions
38,629
More labels
More
Labels
Labels
Create new label
Labels
Labels
[Imap]/Nevyžiadaná pošta has menu
[Imap]/Nevyžiadaná pošta
arch has menu
arch
Deleted Items has menu
Deleted Items
Fibank 1229 unread has menu
Fibank
1,229
FL 6 unread has menu
FL
6
Hardware & Software has menu
Hardware & Software
HOSTING 5 unread has menu
HOSTING
5
Infected Items has menu
Infected Items
jiminny-github 7421 unread has menu
jiminny-github
7,421
Junk E-mail 219 unread has menu
Junk E-mail
219
Kontakty has menu
Kontakty
Sent Items has menu
Sent Items
WORK 848 unread has menu
WORK
848
z centra 1274 unread has menu
z centra
1,274
More labels
More
Select
Refresh
More email options
Show more messages
1
–
50
of
21,145
Newer
Older
Toggle split pane mode
Input tools on/off (Ctrl-Shift-K)
Select input tool
Conversations
Conversations
Primary
Primary
Promotions, 50 new messages,
50 new
Promotions
Social, 25 new messages,
25 new
Social
Updates
Updates
Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.
Not starred
Important because it matched one of your importance filters.
Notion Team
Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Get a first look at our developer tools
-
Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
10:45
CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.
Not starred
Not important
CircleCI Builds
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification
-
app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
10:40
imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.
Not starred
Not important
imot.bg
Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
Известяване за промяна в цена от imot.bg
-
Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
09:03
Medium Weekly Digest, Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained, 08:20, Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,.
Not starred
Important according to Google magic.
Medium Weekly Digest
Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained - Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,
Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained
-
Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,
08:20
Proton, You have 1 new message(s) in your Proton Mail account k[PASSWORD_DOTS], 01:42, Please log in at https://mail.proton.me to check them. [Proton](https://proton.me/) You have 1 new message(s) Hello, You have 1 new message(s) in your inbox and custom folders. Please log in at https:/.
Not starred
Important according to Google magic....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(67) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"rescue time detailed overview - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Mute tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Inbox - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"None selected","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Skip to content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Using Gmail with screen readers","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Using Gmail with screen readers","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Main menu","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Gmail","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Search","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search mail","depth":18,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Advanced search options","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search mail","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Support","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Settings","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Gemini","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google apps","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com), Storage usage alert","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Compose","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Inbox","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Starred","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Starred","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Snoozed","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Snoozed","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Important","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Important","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sent","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sent","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Drafts 7 unread","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drafts","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Purchases has menu","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Purchases","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Social 5165 unread has menu","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Social","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5,165","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Updates 8687 unread has menu","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Updates","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8,687","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forums 6048 unread has menu","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forums","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6,048","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Promotions 38629 unread has menu","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Promotions","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"38,629","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More labels","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Labels","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create new label","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Labels","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Labels","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[Imap]/Nevyžiadaná pošta has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Imap]/Nevyžiadaná pošta","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"arch has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"arch","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deleted Items has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deleted Items","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fibank 1229 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fibank","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,229","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"FL 6 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"FL","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hardware & Software has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hardware & Software","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"HOSTING 5 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"HOSTING","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Infected Items has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Infected Items","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"jiminny-github 7421 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny-github","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7,421","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Junk E-mail 219 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Junk E-mail","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"219","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kontakty has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kontakty","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sent Items has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sent Items","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"WORK 848 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"WORK","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"848","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"z centra 1274 unread has menu","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"z centra","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1,274","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More labels","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Select","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Refresh","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More email options","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show more messages","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"–","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"of","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21,145","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newer","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Older","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Toggle split pane mode","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Input tools on/off (Ctrl-Shift-K)","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Select input tool","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversations","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversations","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Primary","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Primary","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Promotions, 50 new messages,","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"50 new","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Promotions","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Social, 25 new messages,","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25 new","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Social","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Updates","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Updates","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Important because it matched one of your importance filters.","depth":18,"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notion Team","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Get a first look at our developer tools","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:45","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Not important","depth":18,"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CircleCI Builds","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:40","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Not important","depth":18,"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"imot.bg","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Известяване за промяна в цена от imot.bg","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09:03","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Medium Weekly Digest, Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained, 08:20, Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,.","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Important according to Google magic.","depth":18,"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium Weekly Digest","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained - Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"08:20","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Proton, You have 1 new message(s) in your Proton Mail account k***********, 01:42, Please log in at https://mail.proton.me to check them. [Proton](https://proton.me/) You have 1 new message(s) Hello, You have 1 new message(s) in your inbox and custom folders. Please log in at https:/.","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Not starred","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Important according to Google magic.","depth":18,"help_text":"","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-6480900576553545285
|
-9171883464535172399
|
idle
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(67) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Mute tab
(132) Japan Just PROVED They Can WIPE Out China Anytime, Anywhere - YouTube
Inbox - [EMAIL] - Gmail
Inbox - [EMAIL] - Gmail
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
None selected
Skip to content
Skip to content
Using Gmail with screen readers
Using Gmail with screen readers
Main menu
Gmail
Search
Search
Search mail
Advanced search options
Search mail
Support
Settings
Ask Gemini
Google apps
Google Account: Lukáš Koválik ([EMAIL]), Storage usage alert
Compose
Labels
Labels
Inbox
Inbox
Starred
Starred
Snoozed
Snoozed
Important
Important
Sent
Sent
Drafts 7 unread
Drafts
7
Purchases has menu
Purchases
Social 5165 unread has menu
Social
5,165
Updates 8687 unread has menu
Updates
8,687
Forums 6048 unread has menu
Forums
6,048
Promotions 38629 unread has menu
Promotions
38,629
More labels
More
Labels
Labels
Create new label
Labels
Labels
[Imap]/Nevyžiadaná pošta has menu
[Imap]/Nevyžiadaná pošta
arch has menu
arch
Deleted Items has menu
Deleted Items
Fibank 1229 unread has menu
Fibank
1,229
FL 6 unread has menu
FL
6
Hardware & Software has menu
Hardware & Software
HOSTING 5 unread has menu
HOSTING
5
Infected Items has menu
Infected Items
jiminny-github 7421 unread has menu
jiminny-github
7,421
Junk E-mail 219 unread has menu
Junk E-mail
219
Kontakty has menu
Kontakty
Sent Items has menu
Sent Items
WORK 848 unread has menu
WORK
848
z centra 1274 unread has menu
z centra
1,274
More labels
More
Select
Refresh
More email options
Show more messages
1
–
50
of
21,145
Newer
Older
Toggle split pane mode
Input tools on/off (Ctrl-Shift-K)
Select input tool
Conversations
Conversations
Primary
Primary
Promotions, 50 new messages,
50 new
Promotions
Social, 25 new messages,
25 new
Social
Updates
Updates
Notion Team, Get a first look at our developer tools, 10:45, Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏.
Not starred
Important because it matched one of your importance filters.
Notion Team
Get a first look at our developer tools - Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
Get a first look at our developer tools
-
Join us for a special virtual event on May 13 ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏ ͏
10:45
CircleCI Builds, [CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification, 10:40, app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to.
Not starred
Not important
CircleCI Builds
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification - app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
[CircleCI] Workflow canceled: jiminny / app on JY-20157-AJ-report-not-send-notification
-
app / build_accept_deploy jiminny / app 2026-04-24T07:38:38Z JY-20157-AJ-report-not-send-notification #57700 Commit push by Lukas Kovalik (LakyLak) 2b160b5 JY-20157 move user pilot tracking changes to
10:40
imot.bg, Известяване за промяна в цена от imot.bg, 09:03, Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено.
Not starred
Not important
imot.bg
Известяване за промяна в цена от imot.bg - Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
Известяване за промяна в цена от imot.bg
-
Imot.bg – Сайт №1 за имоти Здравейте, Има нови известия за промяна на цена от обявите в бележника Ви в imot.bg: Продава КЪЩА, област Перник, с. Големо Бучино: стара цена 265000 EURЦената е с включено
09:03
Medium Weekly Digest, Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained, 08:20, Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,.
Not starred
Important according to Google magic.
Medium Weekly Digest
Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained - Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,
Docker, Kubernetes, and Helm — Intuitively and Exhaustively Explained | Daniel Warfield in Intuitively and Exhaustively Explained
-
Lukáš Koválik Stories for Lukáš Koválik @kovaliklukas·Become a member Medium weekly digest Today's highlights Daniel Warfield Daniel WarfieldinIntuitively and Exhaustively Explained Docker,
08:20
Proton, You have 1 new message(s) in your Proton Mail account k[PASSWORD_DOTS], 01:42, Please log in at https://mail.proton.me to check them. [Proton](https://proton.me/) You have 1 new message(s) Hello, You have 1 new message(s) in your inbox and custom folders. Please log in at https:/.
Not starred
Important according to Google magic....
|
NULL
|
|
76451
|
NULL
|
0
|
2026-04-24T07:58:55.930027+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017535930_m2.jpg...
|
Firefox
|
JY-9712 | Nuges to expire after one year by nikola JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11981
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Close tab
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
nikolaybiaivanov
nikolaybiaivanov
requested your review on this pull request.
Add your review
Add your review
JY-9712 | Nuges to expire after one year #11981 Edit title
JY-9712 | Nuges to expire after one year
#
11981
Edit title
Unable to merge
Unable to merge
Code
Code
Open
nikolaybiaivanov
nikolaybiaivanov
wants to merge 14 commits into
master
master
from
JY-9712-change-forever-nudges-to-1-year-expiration
JY-9712-change-forever-nudges-to-1-year-expiration
Copy head branch name to clipboard
Lines changed: 1276 additions & 1668 deletions
Conversation (11)
Conversation
(
11
)
Commits (14)
Commits
(
14
)
Checks (3)
Checks
(
3
)
Files changed (33)
Files changed
(
33
)
Conversation
Conversation
@nikolaybiaivanov
Show options
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
JIRA: JY-9712
JIRA:
JY-9712
JY-9712
Deployment notes:
Deployment notes:
None
Add or remove reactions
@nikolaybiaivanov
Show options
Author
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
@claude
@claude
Add or remove reactions
react with eyes
👀
1
@claude
Show options
claude Bot commented last week •
claude
claude
Bot
commented
last week
last week
•
edited
edited
Claude finished
@nikolaybiaivanov
@nikolaybiaivanov
's task in 2m 9s
——
View job
View job
Code Review
Code Review
Completed task
Gather context and read changed files
Completed task
Review NudgeFactory.php changes
Completed task
Review NudgeRepository.php changes
Completed task
Review RemoveExpiredNudgesCommand.php changes
Completed task
Review SendNudgeExpirationWarningsCommand.php (new)
Completed task
Review NudgeController.php changes
Completed task
Review Nudge.php model changes
Completed task
Review NudgeExpirationWarningNotification.php (new)
Completed task
Review migration file (new)
Completed task
Review email templates (new)
Completed task
Review Kernel.php changes
Completed task
Post final review
Overall this is a well-structured refactor. The removal of the legacy
expires_in
integer enum in favour of a real datetime
expires_at
, the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:
1. Migration: per-row UPDATE is slow at scale
1. Migration: per-row UPDATE is slow at scale
database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php
The migration issues one
UPDATE
per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:
--
Nudges older than 1 year → expire in 8 days
UPDATE
nudges
SET
expires_at
=
DATE_ADD(NOW(), INTERVAL
8
DAY)
WHERE
expires_at IS
NULL
AND
created_at
<
DATE_SUB(NOW(), INTERVAL
1
YEAR);
--
Newer nudges → expire 1 year after creation
UPDATE
nudges
SET
expires_at
=
DATE_ADD(created_at, INTERVAL
1
YEAR)
WHERE
expires_at IS
NULL
AND
created_at
>=
DATE_SUB(NOW(), INTERVAL
1
YEAR);
Copy
The
endOfDay()
adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single
whereIn
on IDs per chunk rather than one query per row.
Fix this →
Fix this →
2. NudgeExpirationWarningNotification — side-effect in via()
2.
NudgeExpirationWarningNotification
— side-effect in
via()
app/Notifications/NudgeExpirationWarningNotification.php:15–29
$formattedExpiresAt
is set in
via()
and consumed in
toPostmark()
. This creates an implicit ordering dependency. Laravel does call
via()
first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into
toPostmark()
(or a private helper called from there) to make it self-contained:
public
function
toPostmark
():
EmailWithTemplate
{
$
email
=
new
EmailWithTemplate
(
'
nudge-expiration-warning
'
);
$
search
=
$
this
->
nudge
->
getActivitySearch
();
$
expiresAt
=
$
this
->
nudge
->
getExpiresAt
();
$
email
->
setData
([
'
nudge_name
'
=>
$
search
->
getName
(),
'
expires_at
'
=>
$
expiresAt
->
format
(
'
F j, Y
'
),
// timezone formatting can be passed separately
'
search_url
'
=>
route
(
'
show.ondemand.page
'
),
]);
return
$
email
;
}
Copy
Fix this →
Fix this →
3. squashNudgeRuns semantics change
3.
squashNudgeRuns
semantics change
app/Console/Commands/RemoveExpiredNudgesCommand.php:95
The condition changed from
whereNull('expires_at')
(only "never-expiring" nudges) to
where('expires_at', '>', now())
(all active nudges). Since nudges no longer have a "never expire" option this makes sense, but it's worth confirming: previously only nudges that had
expires_in = EXPIRE_NEVER
were squashed, now
all active nudges
are candidates. If that's intentional, a short comment explaining the rationale would help future readers.
4. SendNudgeExpirationWarningsCommand — missing Sentry capture
4.
SendNudgeExpirationWarningsCommand
— missing Sentry capture
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64
RemoveExpiredNudgesCommand
reports exceptions to Sentry;
SendNudgeExpirationWarningsCommand
only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding
Sentry::captureException($e)
in the
catch
block, consistent with the sibling command.
Fix this →
Fix this →
5. Minor — Command::SUCCESS constant
5. Minor —
Command::SUCCESS
constant
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:79
return
0
;
Copy
Should be
return Command::SUCCESS;
for readability and to match Laravel convention.
6. NudgeRepository — expires_at IS NULL edge case
6.
NudgeRepository
—
expires_at IS NULL
edge case
app/Component/Nudge/Repository/NudgeRepository.php:123
->
where
(
'
expires_at
'
,
'
>
'
,
now
())
Copy
This silently excludes any nudge with a
NULL
expires_at
(which should be zero after the migration runs, but worth noting). If the migration ever fails mid-run, affected nudges would stop triggering until the migration is re-run. Adding a note in the migration's docblock about this dependency would help with incident response.
7. Email template — link to specific section
7. Email template — link to specific section
resources/views/emails/postmark-templates/email/nudge-expiration-warning.email.mustache
The email instructs users to go to "Jiminny → On Demand → Saved Searches" but
search_url
points to the generic On Demand page. If a direct URL to the Saved Searches tab is available, using it would reduce friction for the user.
Summary
Summary
Severity
Issue
Medium
Migration does N+1 UPDATEs — use bulk queries
Medium
via()
side-effect in notification — breaks if queued
Low
squashNudgeRuns
now targets all active nudges — confirm intent
Low
Missing Sentry capture in warning command
Cosmetic
Use
Command::SUCCESS
constant
Informational
NULL expires_at
edge case in repository
UX
Email deep-link to Saved Searches tab
Severity
Medium
Medium
Low...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.20031923,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.07679521,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"bounds":{"left":0.31067154,"top":0.0,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"bounds":{"left":0.31067154,"top":0.0,"width":0.0029920214,"height":0.21468475},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"bounds":{"left":0.3159907,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"bounds":{"left":0.33061835,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"bounds":{"left":0.34391624,"top":0.008778931,"width":0.018949468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"bounds":{"left":0.3459109,"top":0.014764565,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"bounds":{"left":0.3678524,"top":0.008778931,"width":0.017785905,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"bounds":{"left":0.3698471,"top":0.014764565,"width":0.008477394,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"bounds":{"left":0.8166556,"top":0.008778931,"width":0.06565824,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"bounds":{"left":0.8289561,"top":0.014764565,"width":0.011801862,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"bounds":{"left":0.84208775,"top":0.016360734,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"bounds":{"left":0.84607714,"top":0.014764565,"width":0.021276595,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"bounds":{"left":0.8843085,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"bounds":{"left":0.89461434,"top":0.008778931,"width":0.008643617,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"bounds":{"left":0.9112367,"top":0.008778931,"width":0.01662234,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"bounds":{"left":0.9305186,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"bounds":{"left":0.9438165,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"bounds":{"left":0.95711434,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"bounds":{"left":0.97041225,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"bounds":{"left":0.9837101,"top":0.008778931,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"bounds":{"left":0.3103391,"top":0.0,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"bounds":{"left":0.3103391,"top":0.0,"width":0.0787899,"height":0.023144454},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"bounds":{"left":0.3159907,"top":0.04349561,"width":0.025099734,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"bounds":{"left":0.32679522,"top":0.04988029,"width":0.011469414,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"bounds":{"left":0.34375,"top":0.04349561,"width":0.054521278,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"bounds":{"left":0.3543883,"top":0.04988029,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.3863032,"top":0.057861134,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"bounds":{"left":0.38929522,"top":0.057861134,"width":0.004986702,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.39428192,"top":0.057861134,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"bounds":{"left":0.40093085,"top":0.04349561,"width":0.029089095,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"bounds":{"left":0.4119016,"top":0.04988029,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"bounds":{"left":0.43267953,"top":0.04349561,"width":0.03025266,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"bounds":{"left":0.44381648,"top":0.04988029,"width":0.015957447,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"bounds":{"left":0.46559176,"top":0.04349561,"width":0.022938829,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"bounds":{"left":0.47639626,"top":0.04988029,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"bounds":{"left":0.49119017,"top":0.04349561,"width":0.070644945,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"bounds":{"left":0.50299203,"top":0.04988029,"width":0.04255319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.5493683,"top":0.057861134,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"bounds":{"left":0.55236036,"top":0.057861134,"width":0.0056515955,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.55801195,"top":0.057861134,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"bounds":{"left":0.56449467,"top":0.04349561,"width":0.031083776,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"bounds":{"left":0.5756317,"top":0.04988029,"width":0.016788565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.59823805,"top":0.04349561,"width":0.032081116,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.609375,"top":0.04988029,"width":0.017785905,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"bounds":{"left":0.32430187,"top":0.087789305,"width":0.0003324468,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"bounds":{"left":0.32430187,"top":0.08938547,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"bounds":{"left":0.32430187,"top":0.08938547,"width":0.2159242,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"bounds":{"left":0.54022604,"top":0.08938547,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"bounds":{"left":0.54022604,"top":0.08938547,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"bounds":{"left":0.58078456,"top":0.08938547,"width":0.08261303,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"bounds":{"left":0.6633976,"top":0.08938547,"width":0.05219415,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"bounds":{"left":0.6633976,"top":0.08938547,"width":0.05219415,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.7155917,"top":0.08938547,"width":0.0013297872,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"bounds":{"left":0.98603725,"top":0.0830008,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Review requested","depth":15,"bounds":{"left":0.46542552,"top":0.14604948,"width":0.0003324468,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review requested","depth":16,"bounds":{"left":0.46542552,"top":0.14764565,"width":0.039893616,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"bounds":{"left":0.46542552,"top":0.14764565,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"bounds":{"left":0.46542552,"top":0.14764565,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested your review on this pull request.","depth":15,"bounds":{"left":0.5036569,"top":0.14764565,"width":0.09158909,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add your review","depth":14,"bounds":{"left":0.8174867,"top":0.14285715,"width":0.036901597,"height":0.022346368},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add your review","depth":16,"bounds":{"left":0.82047874,"top":0.14804469,"width":0.030917553,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JY-9712 | Nuges to expire after one year #11981 Edit title","depth":13,"bounds":{"left":0.453125,"top":0.18635276,"width":0.2293883,"height":0.031923383},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year","depth":14,"bounds":{"left":0.453125,"top":0.18715084,"width":0.18118352,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.6369681,"top":0.18715084,"width":0.0066489363,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11981","depth":15,"bounds":{"left":0.64361703,"top":0.18715084,"width":0.026928192,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"bounds":{"left":0.671875,"top":0.1895451,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unable to merge","depth":13,"bounds":{"left":0.7747673,"top":0.19273743,"width":0.053025264,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unable to merge","depth":15,"bounds":{"left":0.78706783,"top":0.19872306,"width":0.036402926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"bounds":{"left":0.82912236,"top":0.19273743,"width":0.02825798,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"bounds":{"left":0.8334442,"top":0.19872306,"width":0.011635638,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"bounds":{"left":0.4637633,"top":0.23064645,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"bounds":{"left":0.48238033,"top":0.22745411,"width":0.03706782,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"bounds":{"left":0.48238033,"top":0.22905028,"width":0.03706782,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 14 commits into","depth":15,"bounds":{"left":0.52077794,"top":0.22905028,"width":0.068484046,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.5905917,"top":0.22705507,"width":0.018450798,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.59258646,"top":0.23024741,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.61037236,"top":0.22905028,"width":0.009973404,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712-change-forever-nudges-to-1-year-expiration","depth":16,"bounds":{"left":0.62167555,"top":0.22705507,"width":0.12400266,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712-change-forever-nudges-to-1-year-expiration","depth":17,"bounds":{"left":0.6236702,"top":0.23024741,"width":0.1200133,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.74700797,"top":0.22466081,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1276 additions & 1668 deletions","depth":14,"bounds":{"left":0.81349736,"top":0.28092578,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (11)","depth":16,"bounds":{"left":0.453125,"top":0.26296887,"width":0.05867686,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Conversation","depth":17,"bounds":{"left":0.46675533,"top":0.2725459,"width":0.028091755,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.50615025,"top":0.2725459,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"bounds":{"left":0.5091423,"top":0.2725459,"width":0.0043218085,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.5134641,"top":0.2725459,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (14)","depth":16,"bounds":{"left":0.51180184,"top":0.26296887,"width":0.05036569,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"bounds":{"left":0.52543217,"top":0.2725459,"width":0.019115692,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.55651593,"top":0.2725459,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":18,"bounds":{"left":0.55950797,"top":0.2725459,"width":0.004986702,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.56449467,"top":0.2725459,"width":0.0018284575,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"bounds":{"left":0.5621675,"top":0.26296887,"width":0.04504654,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"bounds":{"left":0.57579786,"top":0.2725459,"width":0.015957447,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6015625,"top":0.2725459,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"bounds":{"left":0.60455453,"top":0.2725459,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.60754657,"top":0.2725459,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (33)","depth":16,"bounds":{"left":0.6072141,"top":0.26296887,"width":0.061668884,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Files changed","depth":17,"bounds":{"left":0.6208444,"top":0.2725459,"width":0.029753989,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.6632314,"top":0.2725459,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33","depth":18,"bounds":{"left":0.6662234,"top":0.2725459,"width":0.0056515955,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.671875,"top":0.2725459,"width":0.0018284575,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Conversation","depth":12,"bounds":{"left":0.453125,"top":0.3084597,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"bounds":{"left":0.453125,"top":0.31125298,"width":0.048204787,"height":0.023144454},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@nikolaybiaivanov","depth":12,"bounds":{"left":0.453125,"top":0.3084597,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":15,"bounds":{"left":0.72672874,"top":0.30925778,"width":0.007978723,"height":0.02952913},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"nikolaybiaivanov commented last week","depth":14,"bounds":{"left":0.47739363,"top":0.30925778,"width":0.24135639,"height":0.02952913},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":16,"bounds":{"left":0.47739363,"top":0.31723863,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":17,"bounds":{"left":0.47739363,"top":0.31723863,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"bounds":{"left":0.515625,"top":0.31723863,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":15,"bounds":{"left":0.5425532,"top":0.31564245,"width":0.020113032,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":17,"bounds":{"left":0.5425532,"top":0.31723863,"width":0.020113032,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JIRA: JY-9712","depth":16,"bounds":{"left":0.47739363,"top":0.35235435,"width":0.25731382,"height":0.017557861},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JIRA:","depth":17,"bounds":{"left":0.47739363,"top":0.3527534,"width":0.015791224,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":17,"bounds":{"left":0.49318483,"top":0.3527534,"width":0.022606382,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":18,"bounds":{"left":0.49318483,"top":0.3527534,"width":0.022606382,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deployment notes:","depth":16,"bounds":{"left":0.47739363,"top":0.38906625,"width":0.25731382,"height":0.01396648},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployment notes:","depth":17,"bounds":{"left":0.47739363,"top":0.38906625,"width":0.042386968,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"None","depth":18,"bounds":{"left":0.48537233,"top":0.41739824,"width":0.011303191,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"bounds":{"left":0.47739363,"top":0.44533122,"width":0.008643617,"height":0.0207502},"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"@nikolaybiaivanov","depth":13,"bounds":{"left":0.453125,"top":0.5051876,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":14,"bounds":{"left":0.72672874,"top":0.5059856,"width":0.007978723,"height":0.02952913},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Author","depth":15,"bounds":{"left":0.7087766,"top":0.51556265,"width":0.012965426,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"nikolaybiaivanov commented last week","depth":13,"bounds":{"left":0.47739363,"top":0.5059856,"width":0.22240691,"height":0.02952913},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"bounds":{"left":0.47739363,"top":0.5139665,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"bounds":{"left":0.47739363,"top":0.5139665,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":14,"bounds":{"left":0.515625,"top":0.5139665,"width":0.025598405,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":14,"bounds":{"left":0.5425532,"top":0.5123703,"width":0.020113032,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":16,"bounds":{"left":0.5425532,"top":0.5139665,"width":0.020113032,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@claude","depth":17,"bounds":{"left":0.47739363,"top":0.5506784,"width":0.019115692,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"@claude","depth":18,"bounds":{"left":0.47739363,"top":0.5506784,"width":0.019115692,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":15,"bounds":{"left":0.47739363,"top":0.5786113,"width":0.008643617,"height":0.0207502},"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"react with eyes","depth":14,"bounds":{"left":0.48736703,"top":0.5786113,"width":0.013796543,"height":0.0207502},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"👀","depth":16,"bounds":{"left":0.4895279,"top":0.5837989,"width":0.004155585,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"bounds":{"left":0.49634308,"top":0.5837989,"width":0.0018284575,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@claude","depth":13,"bounds":{"left":0.453125,"top":0.63846767,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":14,"bounds":{"left":0.72672874,"top":0.6392658,"width":0.007978723,"height":0.02952913},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"claude Bot commented last week •","depth":13,"bounds":{"left":0.47739363,"top":0.6392658,"width":0.24135639,"height":0.029928172},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"claude","depth":15,"bounds":{"left":0.47739363,"top":0.6472466,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"claude","depth":16,"bounds":{"left":0.47739363,"top":0.6472466,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bot","depth":16,"bounds":{"left":0.49584442,"top":0.64884275,"width":0.0066489363,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":14,"bounds":{"left":0.50615025,"top":0.64764565,"width":0.02543218,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":14,"bounds":{"left":0.53291225,"top":0.6460495,"width":0.020113032,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":16,"bounds":{"left":0.53291225,"top":0.64764565,"width":0.020113032,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":16,"bounds":{"left":0.554355,"top":0.64764565,"width":0.0021609042,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"edited","depth":16,"bounds":{"left":0.5578458,"top":0.6460495,"width":0.020113032,"height":0.016759777},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"edited","depth":18,"bounds":{"left":0.5578458,"top":0.64764565,"width":0.014793883,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude finished","depth":18,"bounds":{"left":0.47739363,"top":0.6843575,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@nikolaybiaivanov","depth":18,"bounds":{"left":0.5134641,"top":0.6843575,"width":0.04138963,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"@nikolaybiaivanov","depth":19,"bounds":{"left":0.5134641,"top":0.6843575,"width":0.04138963,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'s task in 2m 9s","depth":18,"bounds":{"left":0.55485374,"top":0.6843575,"width":0.03523936,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"——","depth":17,"bounds":{"left":0.5900931,"top":0.6843575,"width":0.010638298,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View job","depth":17,"bounds":{"left":0.6007314,"top":0.6843575,"width":0.018284574,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View job","depth":18,"bounds":{"left":0.6007314,"top":0.6843575,"width":0.018284574,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":16,"bounds":{"left":0.47739363,"top":0.7406225,"width":0.25731382,"height":0.017557861},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"bounds":{"left":0.47739363,"top":0.7410216,"width":0.03523936,"height":0.016759777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.7753392,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gather context and read changed files","depth":18,"bounds":{"left":0.48537233,"top":0.7741421,"width":0.08361037,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.7952913,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeFactory.php changes","depth":18,"bounds":{"left":0.48537233,"top":0.79409415,"width":0.076961435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.8152434,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeRepository.php changes","depth":18,"bounds":{"left":0.48537233,"top":0.81404626,"width":0.083942816,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.8355946,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review RemoveExpiredNudgesCommand.php changes","depth":18,"bounds":{"left":0.48537233,"top":0.8339984,"width":0.11884973,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.8555467,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review SendNudgeExpirationWarningsCommand.php (new)","depth":18,"bounds":{"left":0.48537233,"top":0.85434955,"width":0.12948804,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.87549883,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeController.php changes","depth":18,"bounds":{"left":0.48537233,"top":0.8743017,"width":0.08211436,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.8954509,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review Nudge.php model changes","depth":18,"bounds":{"left":0.48537233,"top":0.8942538,"width":0.07579787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.915403,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeExpirationWarningNotification.php (new)","depth":18,"bounds":{"left":0.48537233,"top":0.9142059,"width":0.11884973,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.9353551,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review migration file (new)","depth":18,"bounds":{"left":0.48537233,"top":0.934158,"width":0.059507977,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.95530725,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review email templates (new)","depth":18,"bounds":{"left":0.48537233,"top":0.95411015,"width":0.0653258,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.97525936,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review Kernel.php changes","depth":18,"bounds":{"left":0.48537233,"top":0.97406226,"width":0.06050532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.47972074,"top":0.99561054,"width":0.004654255,"height":0.004389465},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Post final review","depth":18,"bounds":{"left":0.48537233,"top":0.9940144,"width":0.036402926,"height":0.0059856176},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Overall this is a well-structured refactor. The removal of the legacy","depth":17,"bounds":{"left":0.47739363,"top":1.0,"width":0.14444813,"height":-0.053870678},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in","depth":18,"bounds":{"left":0.62333775,"top":1.0,"width":0.023936171,"height":-0.055865884},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"integer enum in favour of a real datetime","depth":17,"bounds":{"left":0.47739363,"top":1.0,"width":0.23969415,"height":-0.053870678},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":18,"bounds":{"left":0.49916887,"top":1.0,"width":0.023769947,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:","depth":17,"bounds":{"left":0.47739363,"top":1.0,"width":0.24517952,"height":-0.07063043},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. Migration: per-row UPDATE is slow at scale","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Migration: per-row UPDATE is slow at scale","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The migration issues one","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nudges older than 1 year → expire in 8 days","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudges","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SET","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_ADD(NOW(), INTERVAL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DAY)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WHERE","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at IS","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AND","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"created_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_SUB(NOW(), INTERVAL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR);","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Newer nudges → expire 1 year after creation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudges","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SET","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_ADD(created_at, INTERVAL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WHERE","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at IS","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AND","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"created_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_SUB(NOW(), INTERVAL","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR);","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"The","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"endOfDay()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"whereIn","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on IDs per chunk rather than one query per row.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fix this →","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. NudgeExpirationWarningNotification — side-effect in via()","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NudgeExpirationWarningNotification","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"— side-effect in","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Notifications/NudgeExpirationWarningNotification.php:15–29","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$formattedExpiresAt","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"is set in","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and consumed in","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This creates an implicit ordering dependency. Laravel does call","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark()","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(or a private helper called from there) to make it self-contained:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EmailWithTemplate","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"new","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EmailWithTemplate","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge-expiration-warning","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivitySearch","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expiresAt","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getExpiresAt","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"setData","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"([","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge_name","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expiresAt","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"format","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"F j, Y","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"),","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// timezone formatting can be passed separately","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search_url","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"route","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"show.ondemand.page","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"),\n ]);","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";\n}","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix this →","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. squashNudgeRuns semantics change","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"squashNudgeRuns","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"semantics change","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Console/Commands/RemoveExpiredNudgesCommand.php:95","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The condition changed from","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"whereNull('expires_at')","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(only \"never-expiring\" nudges) to","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"where('expires_at', '>', now())","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(all active nudges). Since nudges no longer have a \"never expire\" option this makes sense, but it's worth confirming: previously only nudges that had","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in = EXPIRE_NEVER","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"were squashed, now","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"all active nudges","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"are candidates. If that's intentional, a short comment explaining the rationale would help future readers.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. SendNudgeExpirationWarningsCommand — missing Sentry capture","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SendNudgeExpirationWarningsCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"— missing Sentry capture","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"RemoveExpiredNudgesCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"reports exceptions to Sentry;","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SendNudgeExpirationWarningsCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sentry::captureException($e)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"catch","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"block, consistent with the sibling command.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fix this →","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"5. Minor — Command::SUCCESS constant","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5. Minor —","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command::SUCCESS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"constant","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Console/Commands/SendNudgeExpirationWarningsCommand.php:79","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Should be","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return Command::SUCCESS;","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for readability and to match Laravel convention.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"6. NudgeRepository — expires_at IS NULL edge case","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NudgeRepository","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"—","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at IS NULL","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"edge case","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Component/Nudge/Repository/NudgeRepository.php:123","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"where","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"now","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"())","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"This silently excludes any nudge with a","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(which should be zero after the migration runs, but worth noting). If the migration ever fails mid-run, affected nudges would stop triggering until the migration is re-run. Adding a note in the migration's docblock about this dependency would help with incident response.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"7. Email template — link to specific section","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7. Email template — link to specific section","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"resources/views/emails/postmark-templates/email/nudge-expiration-warning.email.mustache","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The email instructs users to go to \"Jiminny → On Demand → Saved Searches\" but","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search_url","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"points to the generic On Demand page. If a direct URL to the Saved Searches tab is available, using it would reduce friction for the user.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Summary","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Summary","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Severity","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Issue","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Migration does N+1 UPDATEs — use bulk queries","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"side-effect in notification — breaks if queued","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Low","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"squashNudgeRuns","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"now targets all active nudges — confirm intent","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Low","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing Sentry capture in warning command","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cosmetic","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Command::SUCCESS","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"constant","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Informational","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL expires_at","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"edge case in repository","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UX","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Email deep-link to Saved Searches tab","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Severity","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Low","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
7025850059065958842
|
6658990905085020809
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Close tab
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
nikolaybiaivanov
nikolaybiaivanov
requested your review on this pull request.
Add your review
Add your review
JY-9712 | Nuges to expire after one year #11981 Edit title
JY-9712 | Nuges to expire after one year
#
11981
Edit title
Unable to merge
Unable to merge
Code
Code
Open
nikolaybiaivanov
nikolaybiaivanov
wants to merge 14 commits into
master
master
from
JY-9712-change-forever-nudges-to-1-year-expiration
JY-9712-change-forever-nudges-to-1-year-expiration
Copy head branch name to clipboard
Lines changed: 1276 additions & 1668 deletions
Conversation (11)
Conversation
(
11
)
Commits (14)
Commits
(
14
)
Checks (3)
Checks
(
3
)
Files changed (33)
Files changed
(
33
)
Conversation
Conversation
@nikolaybiaivanov
Show options
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
JIRA: JY-9712
JIRA:
JY-9712
JY-9712
Deployment notes:
Deployment notes:
None
Add or remove reactions
@nikolaybiaivanov
Show options
Author
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
@claude
@claude
Add or remove reactions
react with eyes
👀
1
@claude
Show options
claude Bot commented last week •
claude
claude
Bot
commented
last week
last week
•
edited
edited
Claude finished
@nikolaybiaivanov
@nikolaybiaivanov
's task in 2m 9s
——
View job
View job
Code Review
Code Review
Completed task
Gather context and read changed files
Completed task
Review NudgeFactory.php changes
Completed task
Review NudgeRepository.php changes
Completed task
Review RemoveExpiredNudgesCommand.php changes
Completed task
Review SendNudgeExpirationWarningsCommand.php (new)
Completed task
Review NudgeController.php changes
Completed task
Review Nudge.php model changes
Completed task
Review NudgeExpirationWarningNotification.php (new)
Completed task
Review migration file (new)
Completed task
Review email templates (new)
Completed task
Review Kernel.php changes
Completed task
Post final review
Overall this is a well-structured refactor. The removal of the legacy
expires_in
integer enum in favour of a real datetime
expires_at
, the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:
1. Migration: per-row UPDATE is slow at scale
1. Migration: per-row UPDATE is slow at scale
database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php
The migration issues one
UPDATE
per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:
--
Nudges older than 1 year → expire in 8 days
UPDATE
nudges
SET
expires_at
=
DATE_ADD(NOW(), INTERVAL
8
DAY)
WHERE
expires_at IS
NULL
AND
created_at
<
DATE_SUB(NOW(), INTERVAL
1
YEAR);
--
Newer nudges → expire 1 year after creation
UPDATE
nudges
SET
expires_at
=
DATE_ADD(created_at, INTERVAL
1
YEAR)
WHERE
expires_at IS
NULL
AND
created_at
>=
DATE_SUB(NOW(), INTERVAL
1
YEAR);
Copy
The
endOfDay()
adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single
whereIn
on IDs per chunk rather than one query per row.
Fix this →
Fix this →
2. NudgeExpirationWarningNotification — side-effect in via()
2.
NudgeExpirationWarningNotification
— side-effect in
via()
app/Notifications/NudgeExpirationWarningNotification.php:15–29
$formattedExpiresAt
is set in
via()
and consumed in
toPostmark()
. This creates an implicit ordering dependency. Laravel does call
via()
first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into
toPostmark()
(or a private helper called from there) to make it self-contained:
public
function
toPostmark
():
EmailWithTemplate
{
$
email
=
new
EmailWithTemplate
(
'
nudge-expiration-warning
'
);
$
search
=
$
this
->
nudge
->
getActivitySearch
();
$
expiresAt
=
$
this
->
nudge
->
getExpiresAt
();
$
email
->
setData
([
'
nudge_name
'
=>
$
search
->
getName
(),
'
expires_at
'
=>
$
expiresAt
->
format
(
'
F j, Y
'
),
// timezone formatting can be passed separately
'
search_url
'
=>
route
(
'
show.ondemand.page
'
),
]);
return
$
email
;
}
Copy
Fix this →
Fix this →
3. squashNudgeRuns semantics change
3.
squashNudgeRuns
semantics change
app/Console/Commands/RemoveExpiredNudgesCommand.php:95
The condition changed from
whereNull('expires_at')
(only "never-expiring" nudges) to
where('expires_at', '>', now())
(all active nudges). Since nudges no longer have a "never expire" option this makes sense, but it's worth confirming: previously only nudges that had
expires_in = EXPIRE_NEVER
were squashed, now
all active nudges
are candidates. If that's intentional, a short comment explaining the rationale would help future readers.
4. SendNudgeExpirationWarningsCommand — missing Sentry capture
4.
SendNudgeExpirationWarningsCommand
— missing Sentry capture
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64
RemoveExpiredNudgesCommand
reports exceptions to Sentry;
SendNudgeExpirationWarningsCommand
only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding
Sentry::captureException($e)
in the
catch
block, consistent with the sibling command.
Fix this →
Fix this →
5. Minor — Command::SUCCESS constant
5. Minor —
Command::SUCCESS
constant
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:79
return
0
;
Copy
Should be
return Command::SUCCESS;
for readability and to match Laravel convention.
6. NudgeRepository — expires_at IS NULL edge case
6.
NudgeRepository
—
expires_at IS NULL
edge case
app/Component/Nudge/Repository/NudgeRepository.php:123
->
where
(
'
expires_at
'
,
'
>
'
,
now
())
Copy
This silently excludes any nudge with a
NULL
expires_at
(which should be zero after the migration runs, but worth noting). If the migration ever fails mid-run, affected nudges would stop triggering until the migration is re-run. Adding a note in the migration's docblock about this dependency would help with incident response.
7. Email template — link to specific section
7. Email template — link to specific section
resources/views/emails/postmark-templates/email/nudge-expiration-warning.email.mustache
The email instructs users to go to "Jiminny → On Demand → Saved Searches" but
search_url
points to the generic On Demand page. If a direct URL to the Saved Searches tab is available, using it would reduce friction for the user.
Summary
Summary
Severity
Issue
Medium
Migration does N+1 UPDATEs — use bulk queries
Medium
via()
side-effect in notification — breaks if queued
Low
squashNudgeRuns
now targets all active nudges — confirm intent
Low
Missing Sentry capture in warning command
Cosmetic
Use
Command::SUCCESS
constant
Informational
NULL expires_at
edge case in repository
UX
Email deep-link to Saved Searches tab
Severity
Medium
Medium
Low...
|
NULL
|
|
76450
|
NULL
|
0
|
2026-04-24T07:58:55.857688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017535857_m1.jpg...
|
Firefox
|
JY-9712 | Nuges to expire after one year by nikola JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11981
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Close tab
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
nikolaybiaivanov
nikolaybiaivanov
requested your review on this pull request.
Add your review
Add your review
JY-9712 | Nuges to expire after one year #11981 Edit title
JY-9712 | Nuges to expire after one year
#
11981
Edit title
Unable to merge
Unable to merge
Code
Code
Open
nikolaybiaivanov
nikolaybiaivanov
wants to merge 14 commits into
master
master
from
JY-9712-change-forever-nudges-to-1-year-expiration
JY-9712-change-forever-nudges-to-1-year-expiration
Copy head branch name to clipboard
Lines changed: 1276 additions & 1668 deletions
Conversation (11)
Conversation
(
11
)
Commits (14)
Commits
(
14
)
Checks (3)
Checks
(
3
)
Files changed (33)
Files changed
(
33
)
Conversation
Conversation
@nikolaybiaivanov
Show options
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
JIRA: JY-9712
JIRA:
JY-9712
JY-9712
Deployment notes:
Deployment notes:
None
Add or remove reactions
@nikolaybiaivanov
Show options
Author
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
@claude
@claude
Add or remove reactions
react with eyes
👀
1
@claude
Show options
claude Bot commented last week •
claude
claude
Bot
commented
last week
last week
•
edited
edited
Claude finished
@nikolaybiaivanov
@nikolaybiaivanov
's task in 2m 9s
——
View job
View job
Code Review
Code Review
Completed task
Gather context and read changed files
Completed task
Review NudgeFactory.php changes
Completed task
Review NudgeRepository.php changes
Completed task
Review RemoveExpiredNudgesCommand.php changes
Completed task
Review SendNudgeExpirationWarningsCommand.php (new)
Completed task
Review NudgeController.php changes
Completed task
Review Nudge.php model changes
Completed task
Review NudgeExpirationWarningNotification.php (new)
Completed task
Review migration file (new)
Completed task
Review email templates (new)
Completed task
Review Kernel.php changes
Completed task
Post final review
Overall this is a well-structured refactor. The removal of the legacy
expires_in
integer enum in favour of a real datetime
expires_at
, the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:
1. Migration: per-row UPDATE is slow at scale
1. Migration: per-row UPDATE is slow at scale
database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php
The migration issues one
UPDATE
per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:
--
Nudges older than 1 year → expire in 8 days
UPDATE
nudges
SET
expires_at
=
DATE_ADD(NOW(), INTERVAL
8
DAY)
WHERE
expires_at IS
NULL
AND
created_at
<
DATE_SUB(NOW(), INTERVAL
1
YEAR);
--
Newer nudges → expire 1 year after creation
UPDATE
nudges
SET
expires_at
=
DATE_ADD(created_at, INTERVAL
1
YEAR)
WHERE
expires_at IS
NULL
AND
created_at
>=
DATE_SUB(NOW(), INTERVAL
1
YEAR);
Copy
The
endOfDay()
adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single
whereIn
on IDs per chunk rather than one query per row.
Fix this →
Fix this →
2. NudgeExpirationWarningNotification — side-effect in via()
2.
NudgeExpirationWarningNotification
— side-effect in
via()
app/Notifications/NudgeExpirationWarningNotification.php:15–29
$formattedExpiresAt
is set in
via()
and consumed in
toPostmark()
. This creates an implicit ordering dependency. Laravel does call
via()
first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into
toPostmark()
(or a private helper called from there) to make it self-contained:
public
function
toPostmark
():
EmailWithTemplate
{
$
email
=
new
EmailWithTemplate
(
'
nudge-expiration-warning
'
);
$
search
=
$
this
->
nudge
->
getActivitySearch
();
$
expiresAt
=
$
this
->
nudge
->
getExpiresAt
();
$
email
->
setData
([
'
nudge_name
'
=>
$
search
->
getName
(),
'
expires_at
'
=>
$
expiresAt
->
format
(
'
F j, Y
'
),
// timezone formatting can be passed separately
'
search_url
'
=>
route
(
'
show.ondemand.page
'
),
]);
return
$
email
;
}
Copy
Fix this →
Fix this →
3. squashNudgeRuns semantics change
3.
squashNudgeRuns
semantics change
app/Console/Commands/RemoveExpiredNudgesCommand.php:95
The condition changed from
whereNull('expires_at')
(only "never-expiring" nudges) to
where('expires_at', '>', now())
(all active nudges). Since nudges no longer have a "never expire" option this makes sense, but it's worth confirming: previously only nudges that had
expires_in = EXPIRE_NEVER
were squashed, now
all active nudges
are candidates. If that's intentional, a short comment explaining the rationale would help future readers.
4. SendNudgeExpirationWarningsCommand — missing Sentry capture
4.
SendNudgeExpirationWarningsCommand
— missing Sentry capture
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64
RemoveExpiredNudgesCommand
reports exceptions to Sentry;
SendNudgeExpirationWarningsCommand
only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding
Sentry::captureException($e)
in the
catch
block, consistent with the sibling command.
Fix this →
Fix this →
5. Minor — Command::SUCCESS constant
5. Minor —...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Review requested","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review requested","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested your review on this pull request.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add your review","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add your review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JY-9712 | Nuges to expire after one year #11981 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11981","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unable to merge","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unable to merge","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 14 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712-change-forever-nudges-to-1-year-expiration","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712-change-forever-nudges-to-1-year-expiration","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1276 additions & 1668 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (11)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (14)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (3)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (33)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Conversation","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@nikolaybiaivanov","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"nikolaybiaivanov commented last week","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JIRA: JY-9712","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JIRA:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deployment notes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployment notes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"None","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"@nikolaybiaivanov","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Author","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"nikolaybiaivanov commented last week","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"nikolaybiaivanov","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"nikolaybiaivanov","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@claude","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"@claude","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":15,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"react with eyes","depth":14,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"👀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@claude","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"claude Bot commented last week •","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"claude","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"claude","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bot","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"last week","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"last week","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"edited","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"edited","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude finished","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@nikolaybiaivanov","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"@nikolaybiaivanov","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'s task in 2m 9s","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"——","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View job","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View job","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gather context and read changed files","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeFactory.php changes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeRepository.php changes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review RemoveExpiredNudgesCommand.php changes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review SendNudgeExpirationWarningsCommand.php (new)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeController.php changes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review Nudge.php model changes","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review NudgeExpirationWarningNotification.php (new)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.4375,"top":0.0,"width":0.009722223,"height":0.015555556},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review migration file (new)","depth":18,"bounds":{"left":0.44930556,"top":0.0,"width":0.124305554,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.4375,"top":0.0,"width":0.009722223,"height":0.015555556},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review email templates (new)","depth":18,"bounds":{"left":0.44930556,"top":0.0,"width":0.13645834,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.4375,"top":0.0,"width":0.009722223,"height":0.015555556},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review Kernel.php changes","depth":18,"bounds":{"left":0.44930556,"top":0.0,"width":0.12638889,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Completed task","depth":18,"bounds":{"left":0.4375,"top":0.0,"width":0.009722223,"height":0.015555556},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Post final review","depth":18,"bounds":{"left":0.44930556,"top":0.0,"width":0.07604167,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Overall this is a well-structured refactor. The removal of the legacy","depth":17,"bounds":{"left":0.43263888,"top":0.075,"width":0.30173612,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in","depth":18,"bounds":{"left":0.7375,"top":0.07777778,"width":0.05,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"integer enum in favour of a real datetime","depth":17,"bounds":{"left":0.43263888,"top":0.075,"width":0.50069445,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":18,"bounds":{"left":0.478125,"top":0.101111114,"width":0.049652778,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:","depth":17,"bounds":{"left":0.43263888,"top":0.09833334,"width":0.5121528,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. Migration: per-row UPDATE is slow at scale","depth":16,"bounds":{"left":0.43263888,"top":0.2,"width":0.5375,"height":0.02388889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Migration: per-row UPDATE is slow at scale","depth":17,"bounds":{"left":0.43263888,"top":0.2,"width":0.2576389,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php","depth":18,"bounds":{"left":0.4357639,"top":0.24666667,"width":0.403125,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The migration issues one","depth":17,"bounds":{"left":0.43263888,"top":0.285,"width":0.114930555,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":18,"bounds":{"left":0.55104166,"top":0.28777778,"width":0.029861111,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:","depth":17,"bounds":{"left":0.43263888,"top":0.285,"width":0.5361111,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":17,"bounds":{"left":0.44375,"top":0.36666667,"width":0.009722223,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nudges older than 1 year → expire in 8 days","depth":17,"bounds":{"left":0.45347223,"top":0.36666667,"width":0.21909723,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":17,"bounds":{"left":0.44375,"top":0.3861111,"width":0.029861111,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudges","depth":17,"bounds":{"left":0.47361112,"top":0.3861111,"width":0.034722224,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SET","depth":17,"bounds":{"left":0.44375,"top":0.405,"width":0.014930556,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"bounds":{"left":0.45868057,"top":0.405,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"bounds":{"left":0.51840276,"top":0.405,"width":0.0048611113,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_ADD(NOW(), INTERVAL","depth":17,"bounds":{"left":0.5232639,"top":0.405,"width":0.12951389,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8","depth":17,"bounds":{"left":0.6527778,"top":0.405,"width":0.0048611113,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DAY)","depth":17,"bounds":{"left":0.6576389,"top":0.405,"width":0.025,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WHERE","depth":17,"bounds":{"left":0.44375,"top":0.42444444,"width":0.024652777,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at IS","depth":17,"bounds":{"left":0.46840277,"top":0.42444444,"width":0.074652776,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL","depth":17,"bounds":{"left":0.54305553,"top":0.42444444,"width":0.02013889,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AND","depth":17,"bounds":{"left":0.45347223,"top":0.44333333,"width":0.014930556,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"created_at","depth":17,"bounds":{"left":0.46840277,"top":0.44333333,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"<","depth":17,"bounds":{"left":0.528125,"top":0.44333333,"width":0.0052083335,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_SUB(NOW(), INTERVAL","depth":17,"bounds":{"left":0.53333336,"top":0.44333333,"width":0.12916666,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.6625,"top":0.44333333,"width":0.0052083335,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR);","depth":17,"bounds":{"left":0.66770834,"top":0.44333333,"width":0.034722224,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":17,"bounds":{"left":0.44375,"top":0.48166665,"width":0.009722223,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Newer nudges → expire 1 year after creation","depth":17,"bounds":{"left":0.45347223,"top":0.48166665,"width":0.21909723,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"UPDATE","depth":17,"bounds":{"left":0.44375,"top":0.5011111,"width":0.029861111,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudges","depth":17,"bounds":{"left":0.47361112,"top":0.5011111,"width":0.034722224,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SET","depth":17,"bounds":{"left":0.44375,"top":0.52,"width":0.014930556,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"bounds":{"left":0.45868057,"top":0.52,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"bounds":{"left":0.51840276,"top":0.52,"width":0.0048611113,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_ADD(created_at, INTERVAL","depth":17,"bounds":{"left":0.5232639,"top":0.52,"width":0.15416667,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.67743057,"top":0.52,"width":0.0052083335,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR)","depth":17,"bounds":{"left":0.6826389,"top":0.52,"width":0.029861111,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"WHERE","depth":17,"bounds":{"left":0.44375,"top":0.53944445,"width":0.024652777,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at IS","depth":17,"bounds":{"left":0.46840277,"top":0.53944445,"width":0.074652776,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NULL","depth":17,"bounds":{"left":0.54305553,"top":0.53944445,"width":0.02013889,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AND","depth":17,"bounds":{"left":0.45347223,"top":0.55833334,"width":0.014930556,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"created_at","depth":17,"bounds":{"left":0.46840277,"top":0.55833334,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":">=","depth":17,"bounds":{"left":0.528125,"top":0.55833334,"width":0.010069445,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DATE_SUB(NOW(), INTERVAL","depth":17,"bounds":{"left":0.5381944,"top":0.55833334,"width":0.12951389,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.66770834,"top":0.55833334,"width":0.0048611113,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YEAR);","depth":17,"bounds":{"left":0.67256945,"top":0.55833334,"width":0.034722224,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"bounds":{"left":0.9409722,"top":0.3561111,"width":0.023611112,"height":0.039444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"The","depth":17,"bounds":{"left":0.43263888,"top":0.61388886,"width":0.019791666,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"endOfDay()","depth":18,"bounds":{"left":0.45555556,"top":0.6166667,"width":0.05,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single","depth":17,"bounds":{"left":0.43263888,"top":0.61388886,"width":0.528125,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"whereIn","depth":18,"bounds":{"left":0.7986111,"top":0.64,"width":0.035069443,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on IDs per chunk rather than one query per row.","depth":17,"bounds":{"left":0.43263888,"top":0.63722223,"width":0.53506947,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fix this →","depth":17,"bounds":{"left":0.43263888,"top":0.70166665,"width":0.043055557,"height":0.018888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"bounds":{"left":0.43263888,"top":0.70166665,"width":0.043055557,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. NudgeExpirationWarningNotification — side-effect in via()","depth":16,"bounds":{"left":0.43263888,"top":0.78,"width":0.5375,"height":0.025},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2.","depth":17,"bounds":{"left":0.43263888,"top":0.78055555,"width":0.013888889,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NudgeExpirationWarningNotification","depth":18,"bounds":{"left":0.44895834,"top":0.7811111,"width":0.24861111,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"— side-effect in","depth":17,"bounds":{"left":0.7,"top":0.78055555,"width":0.09652778,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"bounds":{"left":0.79895836,"top":0.7811111,"width":0.036805555,"height":0.023333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Notifications/NudgeExpirationWarningNotification.php:15–29","depth":18,"bounds":{"left":0.4357639,"top":0.8277778,"width":0.30868056,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$formattedExpiresAt","depth":18,"bounds":{"left":0.4357639,"top":0.8688889,"width":0.094444446,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"is set in","depth":17,"bounds":{"left":0.53368056,"top":0.8661111,"width":0.039930556,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"bounds":{"left":0.57708335,"top":0.8688889,"width":0.024652777,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and consumed in","depth":17,"bounds":{"left":0.60520834,"top":0.8661111,"width":0.08229167,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark()","depth":18,"bounds":{"left":0.690625,"top":0.8688889,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". This creates an implicit ordering dependency. Laravel does call","depth":17,"bounds":{"left":0.43263888,"top":0.8661111,"width":0.5309028,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via()","depth":18,"bounds":{"left":0.51319444,"top":0.8922222,"width":0.025,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into","depth":17,"bounds":{"left":0.43263888,"top":0.8894445,"width":0.5072917,"height":0.04222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark()","depth":18,"bounds":{"left":0.52881944,"top":0.91555554,"width":0.059722222,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(or a private helper called from there) to make it self-contained:","depth":17,"bounds":{"left":0.5920139,"top":0.9127778,"width":0.28784722,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public","depth":17,"bounds":{"left":0.44375,"top":0.97055554,"width":0.029861111,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"function","depth":17,"bounds":{"left":0.47847223,"top":0.97055554,"width":0.039930556,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"toPostmark","depth":17,"bounds":{"left":0.5232639,"top":0.97055554,"width":0.049652778,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"():","depth":17,"bounds":{"left":0.5729167,"top":0.97055554,"width":0.02013889,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EmailWithTemplate","depth":17,"bounds":{"left":0.59305555,"top":0.97055554,"width":0.084375,"height":0.016111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":17,"bounds":{"left":0.44375,"top":0.99,"width":0.019791666,"height":0.00999999},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.46354166,"top":1.0,"width":0.0048611113,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"bounds":{"left":0.46840277,"top":1.0,"width":0.025,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"bounds":{"left":0.49340278,"top":1.0,"width":0.014930556,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"new","depth":17,"bounds":{"left":0.5083333,"top":1.0,"width":0.014930556,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EmailWithTemplate","depth":17,"bounds":{"left":0.528125,"top":1.0,"width":0.08472222,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"bounds":{"left":0.6128472,"top":1.0,"width":0.0048611113,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"bounds":{"left":0.6177083,"top":1.0,"width":0.0052083335,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge-expiration-warning","depth":17,"bounds":{"left":0.62291664,"top":1.0,"width":0.119444445,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"bounds":{"left":0.7423611,"top":1.0,"width":0.0048611113,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":");","depth":17,"bounds":{"left":0.44375,"top":1.0,"width":0.31354168,"height":-0.008888841},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.46354166,"top":1.0,"width":0.0048611113,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search","depth":17,"bounds":{"left":0.46840277,"top":1.0,"width":0.029861111,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"bounds":{"left":0.4982639,"top":1.0,"width":0.014930556,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.51319444,"top":1.0,"width":0.0052083335,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":17,"bounds":{"left":0.51840276,"top":1.0,"width":0.019791666,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"bounds":{"left":0.5381944,"top":1.0,"width":0.010069445,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge","depth":17,"bounds":{"left":0.5482639,"top":1.0,"width":0.024652777,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"bounds":{"left":0.5729167,"top":1.0,"width":0.010069445,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getActivitySearch","depth":17,"bounds":{"left":0.5829861,"top":1.0,"width":0.08472222,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":17,"bounds":{"left":0.44375,"top":1.0,"width":0.23888889,"height":-0.028333306},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.46354166,"top":1.0,"width":0.0048611113,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expiresAt","depth":17,"bounds":{"left":0.46840277,"top":1.0,"width":0.044791665,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":17,"bounds":{"left":0.51319444,"top":1.0,"width":0.014930556,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.528125,"top":1.0,"width":0.0052083335,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"this","depth":17,"bounds":{"left":0.53333336,"top":1.0,"width":0.019791666,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"bounds":{"left":0.553125,"top":1.0,"width":0.010069445,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge","depth":17,"bounds":{"left":0.56319445,"top":1.0,"width":0.024652777,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"bounds":{"left":0.58784723,"top":1.0,"width":0.010069445,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getExpiresAt","depth":17,"bounds":{"left":0.59791666,"top":1.0,"width":0.059722222,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"();","depth":17,"bounds":{"left":0.44375,"top":1.0,"width":0.22881944,"height":-0.047222257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"bounds":{"left":0.46354166,"top":1.0,"width":0.0048611113,"height":-0.08555555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"bounds":{"left":0.46840277,"top":1.0,"width":0.025,"height":-0.08555555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"bounds":{"left":0.49340278,"top":1.0,"width":0.010069445,"height":-0.08555555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"setData","depth":17,"bounds":{"left":0.5034722,"top":1.0,"width":0.034722224,"height":-0.08555555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"([","depth":17,"bounds":{"left":0.44375,"top":1.0,"width":0.10451389,"height":-0.08555555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nudge_name","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getName","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(),","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_at","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expiresAt","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"->","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"format","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"F j, Y","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"),","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"// timezone formatting can be passed separately","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"search_url","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=>","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"route","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"show.ondemand.page","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"),\n ]);","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"email","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":";\n}","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy","depth":17,"bounds":{"left":0.9409722,"top":0.96055555,"width":0.023611112,"height":0.039444443},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix this →","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"3. squashNudgeRuns semantics change","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"squashNudgeRuns","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"semantics change","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Console/Commands/RemoveExpiredNudgesCommand.php:95","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The condition changed from","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"whereNull('expires_at')","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(only \"never-expiring\" nudges) to","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"where('expires_at', '>', now())","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(all active nudges). Since nudges no longer have a \"never expire\" option this makes sense, but it's worth confirming: previously only nudges that had","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"expires_in = EXPIRE_NEVER","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"were squashed, now","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"all active nudges","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"are candidates. If that's intentional, a short comment explaining the rationale would help future readers.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"4. SendNudgeExpirationWarningsCommand — missing Sentry capture","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SendNudgeExpirationWarningsCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"— missing Sentry capture","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"RemoveExpiredNudgesCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"reports exceptions to Sentry;","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SendNudgeExpirationWarningsCommand","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sentry::captureException($e)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"catch","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"block, consistent with the sibling command.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Fix this →","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix this →","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"5. Minor — Command::SUCCESS constant","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5. Minor —","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
2396763785837227766
|
2046170190658823097
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Close tab
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
New Tab
New Tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Review requested
Review requested
nikolaybiaivanov
nikolaybiaivanov
requested your review on this pull request.
Add your review
Add your review
JY-9712 | Nuges to expire after one year #11981 Edit title
JY-9712 | Nuges to expire after one year
#
11981
Edit title
Unable to merge
Unable to merge
Code
Code
Open
nikolaybiaivanov
nikolaybiaivanov
wants to merge 14 commits into
master
master
from
JY-9712-change-forever-nudges-to-1-year-expiration
JY-9712-change-forever-nudges-to-1-year-expiration
Copy head branch name to clipboard
Lines changed: 1276 additions & 1668 deletions
Conversation (11)
Conversation
(
11
)
Commits (14)
Commits
(
14
)
Checks (3)
Checks
(
3
)
Files changed (33)
Files changed
(
33
)
Conversation
Conversation
@nikolaybiaivanov
Show options
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
JIRA: JY-9712
JIRA:
JY-9712
JY-9712
Deployment notes:
Deployment notes:
None
Add or remove reactions
@nikolaybiaivanov
Show options
Author
nikolaybiaivanov commented last week
nikolaybiaivanov
nikolaybiaivanov
commented
last week
last week
@claude
@claude
Add or remove reactions
react with eyes
👀
1
@claude
Show options
claude Bot commented last week •
claude
claude
Bot
commented
last week
last week
•
edited
edited
Claude finished
@nikolaybiaivanov
@nikolaybiaivanov
's task in 2m 9s
——
View job
View job
Code Review
Code Review
Completed task
Gather context and read changed files
Completed task
Review NudgeFactory.php changes
Completed task
Review NudgeRepository.php changes
Completed task
Review RemoveExpiredNudgesCommand.php changes
Completed task
Review SendNudgeExpirationWarningsCommand.php (new)
Completed task
Review NudgeController.php changes
Completed task
Review Nudge.php model changes
Completed task
Review NudgeExpirationWarningNotification.php (new)
Completed task
Review migration file (new)
Completed task
Review email templates (new)
Completed task
Review Kernel.php changes
Completed task
Post final review
Overall this is a well-structured refactor. The removal of the legacy
expires_in
integer enum in favour of a real datetime
expires_at
, the migration for existing data, and the warning-email pipeline all fit together cleanly. A few things worth looking at:
1. Migration: per-row UPDATE is slow at scale
1. Migration: per-row UPDATE is slow at scale
database/migrations/2026_04_16_121204_migrate_existing_nudges_expiration_data.php
The migration issues one
UPDATE
per nudge inside a chunk loop. For large tables this will be very slow. You can replace it with two bulk updates and drop the PHP loop entirely:
--
Nudges older than 1 year → expire in 8 days
UPDATE
nudges
SET
expires_at
=
DATE_ADD(NOW(), INTERVAL
8
DAY)
WHERE
expires_at IS
NULL
AND
created_at
<
DATE_SUB(NOW(), INTERVAL
1
YEAR);
--
Newer nudges → expire 1 year after creation
UPDATE
nudges
SET
expires_at
=
DATE_ADD(created_at, INTERVAL
1
YEAR)
WHERE
expires_at IS
NULL
AND
created_at
>=
DATE_SUB(NOW(), INTERVAL
1
YEAR);
Copy
The
endOfDay()
adjustment is a nice touch that should be preserved if you keep the chunk approach; raw SQL would lose that. But even a chunk-based approach can batch the updates with a single
whereIn
on IDs per chunk rather than one query per row.
Fix this →
Fix this →
2. NudgeExpirationWarningNotification — side-effect in via()
2.
NudgeExpirationWarningNotification
— side-effect in
via()
app/Notifications/NudgeExpirationWarningNotification.php:15–29
$formattedExpiresAt
is set in
via()
and consumed in
toPostmark()
. This creates an implicit ordering dependency. Laravel does call
via()
first, but if this notification is ever queued or serialised the state won't survive. Move the formatting logic into
toPostmark()
(or a private helper called from there) to make it self-contained:
public
function
toPostmark
():
EmailWithTemplate
{
$
email
=
new
EmailWithTemplate
(
'
nudge-expiration-warning
'
);
$
search
=
$
this
->
nudge
->
getActivitySearch
();
$
expiresAt
=
$
this
->
nudge
->
getExpiresAt
();
$
email
->
setData
([
'
nudge_name
'
=>
$
search
->
getName
(),
'
expires_at
'
=>
$
expiresAt
->
format
(
'
F j, Y
'
),
// timezone formatting can be passed separately
'
search_url
'
=>
route
(
'
show.ondemand.page
'
),
]);
return
$
email
;
}
Copy
Fix this →
Fix this →
3. squashNudgeRuns semantics change
3.
squashNudgeRuns
semantics change
app/Console/Commands/RemoveExpiredNudgesCommand.php:95
The condition changed from
whereNull('expires_at')
(only "never-expiring" nudges) to
where('expires_at', '>', now())
(all active nudges). Since nudges no longer have a "never expire" option this makes sense, but it's worth confirming: previously only nudges that had
expires_in = EXPIRE_NEVER
were squashed, now
all active nudges
are candidates. If that's intentional, a short comment explaining the rationale would help future readers.
4. SendNudgeExpirationWarningsCommand — missing Sentry capture
4.
SendNudgeExpirationWarningsCommand
— missing Sentry capture
app/Console/Commands/SendNudgeExpirationWarningsCommand.php:56–64
RemoveExpiredNudgesCommand
reports exceptions to Sentry;
SendNudgeExpirationWarningsCommand
only logs them. If sending a warning fails silently in production you won't get an alert. Consider adding
Sentry::captureException($e)
in the
catch
block, consistent with the sibling command.
Fix this →
Fix this →
5. Minor — Command::SUCCESS constant
5. Minor —...
|
NULL
|
|
76407
|
NULL
|
0
|
2026-04-24T07:53:32.799287+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017212799_m2.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57703
57703
RUNNING workflow setup-workflow. Collapse the workflow jobs list.
Status Running Running
Running
5s
remain
Info Outline
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
b1d5c77
Merge branch 'master' into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
23s ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
RUNNING job setup
setup
876698
1m 24s
1m 24s
app
57702
57702
CANCELED workflow setup-workflow. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
deacf36
Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
1m ago
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
CANCELED job setup
setup
876697
1m 48s
1m 48s
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
9m 22s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
11m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
6m 51s
6m 51s
SUCCESS job test-backend-lint
test-backend-lint
876691
4m 12s
4m 12s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
12m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
14m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
13m 33s
13m 33s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
13m 32s
13m 32s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
15m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
28m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
30m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
29m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876629
1m 28s
1m 28s
SUCCESS job build-frontend
build-frontend
876633
2m 3s
2m 3s
SUCCESS job test-frontend
test-frontend
876644
1m 40s
1m 40s
SUCCESS job build-backend
build-backend
876630
1m 9s
1m 9s
SUCCESS job phpstan
phpstan
876631
1m 4s
1m 4s
SUCCESS job prepare_deploy_revision_prod
prepare_deploy_revision_prod
876646
50s
50s
SUCCESS job build_docker_backend_code_prod
build_docker_backend_code_prod
876649
1m 56s
1m 56s
SUCCESS job build_docker_worker_code_prod...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.07679521,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.3312051,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.15924202,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"bounds":{"left":0.31831783,"top":0.061452515,"width":0.044215426,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"bounds":{"left":0.9371675,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"bounds":{"left":0.9517952,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"bounds":{"left":0.96642286,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"bounds":{"left":0.98105055,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"bounds":{"left":0.3179854,"top":0.10295291,"width":0.01462766,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"bounds":{"left":0.3159907,"top":0.15083799,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"bounds":{"left":0.31881648,"top":0.1839585,"width":0.012965426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"bounds":{"left":0.3159907,"top":0.21308859,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"bounds":{"left":0.31499335,"top":0.2462091,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"bounds":{"left":0.3159907,"top":0.2753392,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"bounds":{"left":0.31632313,"top":0.3084597,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"bounds":{"left":0.3159907,"top":0.33798882,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"bounds":{"left":0.31648937,"top":0.37071028,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"bounds":{"left":0.3159907,"top":0.40023944,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"bounds":{"left":0.31665558,"top":0.4329609,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"bounds":{"left":0.3159907,"top":0.46249002,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"bounds":{"left":0.31632313,"top":0.49561054,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"bounds":{"left":0.3159907,"top":0.52474064,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"bounds":{"left":0.32130983,"top":0.55786115,"width":0.007978723,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"bounds":{"left":0.3159907,"top":0.58699125,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"bounds":{"left":0.32064494,"top":0.6201117,"width":0.00930851,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.31831783,"top":0.9345571,"width":0.013962766,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.31831783,"top":0.96727854,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"bounds":{"left":0.34823802,"top":0.1245012,"width":0.042054523,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"bounds":{"left":0.35887632,"top":0.12609737,"width":0.030086435,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"bounds":{"left":0.3957779,"top":0.1245012,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"bounds":{"left":0.40641624,"top":0.12609737,"width":0.009807181,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"bounds":{"left":0.35887632,"top":0.16400638,"width":0.016954787,"height":0.029130088},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"bounds":{"left":0.35887632,"top":0.16480447,"width":0.016954787,"height":0.027533919},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"bounds":{"left":0.34823802,"top":0.19952115,"width":0.024102394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"bounds":{"left":0.34823802,"top":0.20151636,"width":0.024102394,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"bounds":{"left":0.3776596,"top":0.19952115,"width":0.021110373,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.3776596,"top":0.20151636,"width":0.021110373,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"bounds":{"left":0.4040891,"top":0.19952115,"width":0.020611702,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"bounds":{"left":0.4040891,"top":0.20151636,"width":0.020611702,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"bounds":{"left":0.86984706,"top":0.16400638,"width":0.057845745,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"bounds":{"left":0.88580453,"top":0.17318435,"width":0.03656915,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"bounds":{"left":0.93301195,"top":0.16400638,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"bounds":{"left":0.34823802,"top":0.23782921,"width":0.053523935,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"bounds":{"left":0.36186835,"top":0.24700718,"width":0.026263298,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"bounds":{"left":0.40442154,"top":0.23782921,"width":0.034242023,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"bounds":{"left":0.4167221,"top":0.24700718,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"bounds":{"left":0.44132313,"top":0.23782921,"width":0.053025264,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"bounds":{"left":0.45362368,"top":0.24700718,"width":0.027094414,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"bounds":{"left":0.49700797,"top":0.23782921,"width":0.051030584,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"bounds":{"left":0.5093085,"top":0.24700718,"width":0.025099734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"bounds":{"left":0.55069816,"top":0.23782921,"width":0.043218084,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"bounds":{"left":0.55502,"top":0.24700718,"width":0.0066489363,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"bounds":{"left":0.5616689,"top":0.24700718,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"bounds":{"left":0.93301195,"top":0.2386273,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"bounds":{"left":0.94797206,"top":0.24780527,"width":0.034075797,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"bounds":{"left":0.35355717,"top":0.3196329,"width":0.015292553,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"bounds":{"left":0.42603058,"top":0.3196329,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"bounds":{"left":0.48287898,"top":0.3196329,"width":0.018284574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"bounds":{"left":0.5728058,"top":0.3196329,"width":0.03274601,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"bounds":{"left":0.70578456,"top":0.3196329,"width":0.025764627,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.8636968,"top":0.3196329,"width":0.009640957,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"bounds":{"left":0.9019282,"top":0.3196329,"width":0.01662234,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"bounds":{"left":0.92918885,"top":0.3196329,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.34796488,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57703","depth":12,"bounds":{"left":0.3538896,"top":0.3643256,"width":0.013962766,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57703","depth":13,"bounds":{"left":0.3538896,"top":0.36552274,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.3499601,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"bounds":{"left":0.42802528,"top":0.35155627,"width":0.03274601,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"bounds":{"left":0.43866357,"top":0.35634476,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5s","depth":13,"bounds":{"left":0.42802528,"top":0.38028732,"width":0.005319149,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"bounds":{"left":0.43334442,"top":0.38028732,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"bounds":{"left":0.45013297,"top":0.37470073,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.35514766,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.35594574,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.35794094,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372-ai-reports-promotion-pages","depth":13,"bounds":{"left":0.5724734,"top":0.34836394,"width":0.08693484,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372-ai-reports-promotion-pages","depth":14,"bounds":{"left":0.5724734,"top":0.349162,"width":0.08693484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.36711892,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"b1d5c77","depth":16,"bounds":{"left":0.5724734,"top":0.36871508,"width":0.019115692,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'master' into JY-20372-ai-reports-promotion-pages","depth":16,"bounds":{"left":0.5724734,"top":0.36871508,"width":0.11087101,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.35594574,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.35594574,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.84923536,"top":0.34836394,"width":0.029089095,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23s ago","depth":15,"bounds":{"left":0.85488695,"top":0.3575419,"width":0.017785905,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89611036,"top":0.34836394,"width":0.027426861,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.42657623,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job setup","depth":14,"bounds":{"left":0.42603058,"top":0.42418197,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.42657623,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876698","depth":16,"bounds":{"left":0.4566157,"top":0.42657623,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 24s","depth":14,"bounds":{"left":0.9019282,"top":0.42418197,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 24s","depth":15,"bounds":{"left":0.9019282,"top":0.42657623,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.47605747,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57702","depth":12,"bounds":{"left":0.3538896,"top":0.49281725,"width":0.013962766,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57702","depth":13,"bounds":{"left":0.3538896,"top":0.49361533,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.47845173,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"bounds":{"left":0.42802528,"top":0.48004788,"width":0.035738032,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"bounds":{"left":0.43866357,"top":0.48443735,"width":0.021110373,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.48324022,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.4840383,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.48603353,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372-ai-reports-promotion-pages","depth":13,"bounds":{"left":0.5724734,"top":0.47685555,"width":0.08693484,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372-ai-reports-promotion-pages","depth":14,"bounds":{"left":0.5724734,"top":0.47765362,"width":0.08693484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.49561054,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deacf36","depth":16,"bounds":{"left":0.5724734,"top":0.49720672,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages","depth":16,"bounds":{"left":0.5724734,"top":0.49720672,"width":0.108211435,"height":0.047486033},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.4840383,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.4840383,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.85123,"top":0.47685555,"width":0.027094414,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m ago","depth":15,"bounds":{"left":0.8568817,"top":0.48563448,"width":0.015791224,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.48004788,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.48004788,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.48004788,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.48004788,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.48004788,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.55426973,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"bounds":{"left":0.42603058,"top":0.5514765,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.55426973,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876697","depth":16,"bounds":{"left":0.4566157,"top":0.55426973,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"bounds":{"left":0.90176195,"top":0.5514765,"width":0.016456118,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"bounds":{"left":0.90176195,"top":0.55426973,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.603751,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57701","depth":12,"bounds":{"left":0.3538896,"top":0.6201117,"width":0.013297873,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57701","depth":13,"bounds":{"left":0.3538896,"top":0.6209098,"width":0.013297873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.6057462,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"bounds":{"left":0.42802528,"top":0.60734236,"width":0.03274601,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"bounds":{"left":0.43866357,"top":0.6117318,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9m 22s","depth":13,"bounds":{"left":0.42802528,"top":0.6360734,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"bounds":{"left":0.44431517,"top":0.6360734,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"bounds":{"left":0.46110374,"top":0.63048685,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":0.6105347,"width":0.045711435,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":0.6117318,"width":0.045711435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.60415006,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.6049481,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.622905,"width":0.08992686,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"bounds":{"left":0.5724734,"top":0.62450117,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"bounds":{"left":0.59391624,"top":0.62450117,"width":0.0625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.6117318,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.6117318,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.8490692,"top":0.60415006,"width":0.02925532,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11m ago","depth":15,"bounds":{"left":0.8547208,"top":0.61332804,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89361703,"top":0.60415006,"width":0.029920213,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.60734236,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.60734236,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.60734236,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.60734236,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.60734236,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.6823623,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.67996806,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.6823623,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876688","depth":16,"bounds":{"left":0.47772607,"top":0.6823623,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 39s","depth":14,"bounds":{"left":0.90176195,"top":0.67996806,"width":0.016456118,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 39s","depth":15,"bounds":{"left":0.90176195,"top":0.6823623,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.7055068,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.70790106,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876692","depth":16,"bounds":{"left":0.47623006,"top":0.70790106,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.7055068,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.70790106,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.7310455,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.73343974,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876693","depth":16,"bounds":{"left":0.4739029,"top":0.73343974,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 41s","depth":14,"bounds":{"left":0.9019282,"top":0.7310455,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 41s","depth":15,"bounds":{"left":0.9019282,"top":0.73343974,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.7565842,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.7589784,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876689","depth":16,"bounds":{"left":0.47623006,"top":0.7589784,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"50s","depth":14,"bounds":{"left":0.9097407,"top":0.7565842,"width":0.008477394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"50s","depth":15,"bounds":{"left":0.9097407,"top":0.7589784,"width":0.008477394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.7821229,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.78451717,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876690","depth":16,"bounds":{"left":0.46210107,"top":0.78451717,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"bounds":{"left":0.9019282,"top":0.7821229,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"bounds":{"left":0.9019282,"top":0.78451717,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.8076616,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.81005585,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876694","depth":16,"bounds":{"left":0.4566157,"top":0.81005585,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 28s","depth":14,"bounds":{"left":0.9019282,"top":0.8076616,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 28s","depth":15,"bounds":{"left":0.9019282,"top":0.81005585,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"bounds":{"left":0.42603058,"top":0.83320034,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":0.8355946,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876695","depth":16,"bounds":{"left":0.45262632,"top":0.8355946,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"6m 51s","depth":14,"bounds":{"left":0.9019282,"top":0.83320034,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m 51s","depth":15,"bounds":{"left":0.9019282,"top":0.8355946,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":0.858739,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":0.8611333,"width":0.038896278,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876691","depth":16,"bounds":{"left":0.48287898,"top":0.8611333,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 12s","depth":14,"bounds":{"left":0.9019282,"top":0.858739,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 12s","depth":15,"bounds":{"left":0.9019282,"top":0.8611333,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":0.88667196,"width":0.02642952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876696","depth":16,"bounds":{"left":0.47041222,"top":0.88667196,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.9273743,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.92897046,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.9333599,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.9321628,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.93296087,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.93495613,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.92577815,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.9265762,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.9445331,"width":0.08992686,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"bounds":{"left":0.5724734,"top":0.94573027,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"bounds":{"left":0.59391624,"top":0.94573027,"width":0.0625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.93296087,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.93296087,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.8484042,"top":0.92577815,"width":0.029920213,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12m ago","depth":15,"bounds":{"left":0.8540558,"top":0.9345571,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89877,"top":0.92577815,"width":0.024767287,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.92897046,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.92897046,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.92897046,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.92897046,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.92897046,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.9860335,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.98363924,"width":0.3254654,"height":0.01636076},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.9860335,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876687","depth":16,"bounds":{"left":0.4566157,"top":0.9860335,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 1s","depth":14,"bounds":{"left":0.9055851,"top":0.98363924,"width":0.012632979,"height":0.01636076},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 1s","depth":15,"bounds":{"left":0.9055851,"top":0.9860335,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.00831117,"height":-0.035514712},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57700","depth":12,"bounds":{"left":0.3538896,"top":1.0,"width":0.013962766,"height":-0.052274585},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57700","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.013962766,"height":-0.05307257},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":1.0,"width":0.010638298,"height":-0.03790903},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"bounds":{"left":0.42802528,"top":1.0,"width":0.035738032,"height":-0.039505243},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"bounds":{"left":0.43866357,"top":1.0,"width":0.021110373,"height":-0.04389465},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.04269755},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.043495655},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":1.0,"width":0.09474734,"height":-0.03631282},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":1.0,"width":0.09474734,"height":-0.037110925},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":1.0,"width":0.12765957,"height":-0.055067778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"bounds":{"left":0.5724734,"top":1.0,"width":0.019780586,"height":-0.05666399},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"bounds":{"left":0.5724734,"top":1.0,"width":0.12283909,"height":-0.05666399},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":1.0,"width":0.011303191,"height":-0.043495655},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":1.0,"width":0.034574468,"height":-0.043495655},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.84823805,"top":1.0,"width":0.030086435,"height":-0.03631282},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14m ago","depth":15,"bounds":{"left":0.85388964,"top":1.0,"width":0.018783245,"height":-0.04509175},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89660907,"top":1.0,"width":0.026928192,"height":-0.03631282},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":1.0,"width":0.010638298,"height":-0.039505243},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":1.0,"width":0.010638298,"height":-0.039505243},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":1.0,"width":0.010638298,"height":-0.039505243},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":1.0,"width":0.010638298,"height":-0.039505243},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":1.0,"width":0.010638298,"height":-0.039505243},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876678","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 18s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 18s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876681","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"13m 33s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13m 33s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876682","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876679","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"13m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876685","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876683","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876684","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876680","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job sonar_cloud","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876686","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876677","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57699","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57699","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876659","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876660","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 55s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 55s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876661","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 57s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 57s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876662","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876663","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job prepare_deploy_revision_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prepare_deploy_revision_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876668","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_backend_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_backend_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876669","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876671","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 56s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 56s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_video_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_video_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876670","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job db_migrations_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"db_migrations_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876672","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_backend_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_backend_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876674","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"5m 13s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m 13s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876676","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_video_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_video_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876673","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"46s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"46s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_frontend_assets_to_s3_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_frontend_assets_to_s3_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876675","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876664","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"58s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"58s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876665","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876666","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job sonar_cloud","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876667","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.90143657,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.9030327,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.9074222,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.9062251,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.90702313,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.90901834,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.90702313,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.90702313,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89660907,"top":0.89984035,"width":0.026928192,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.97725457,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.9744613,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.97725457,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876628","depth":16,"bounds":{"left":0.4566157,"top":0.97725457,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.9744613,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.97725457,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.00831117,"height":-0.026735783},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57698","depth":12,"bounds":{"left":0.3538896,"top":1.0,"width":0.01412899,"height":-0.043096542},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57698","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.01412899,"height":-0.04389465},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.033519506},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3ac70b3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":1.0,"width":0.011303191,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":1.0,"width":0.034574468,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"29m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":1.0,"width":0.010638298,"height":-0.0303272},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":1.0,"width":0.010638298,"height":-0.0303272},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":1.0,"width":0.010638298,"height":-0.0303272},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876629","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 28s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 28s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876633","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 3s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 3s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876644","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 40s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 40s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876630","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 9s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 9s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876631","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job prepare_deploy_revision_prod","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prepare_deploy_revision_prod","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876646","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"50s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"50s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_backend_code_prod","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_backend_code_prod","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876649","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 56s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 56s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_code_prod","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
2458271650688565533
|
-8356600059851278672
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57703
57703
RUNNING workflow setup-workflow. Collapse the workflow jobs list.
Status Running Running
Running
5s
remain
Info Outline
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
b1d5c77
Merge branch 'master' into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
23s ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
RUNNING job setup
setup
876698
1m 24s
1m 24s
app
57702
57702
CANCELED workflow setup-workflow. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
deacf36
Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
1m ago
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
CANCELED job setup
setup
876697
1m 48s
1m 48s
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
9m 22s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
11m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
6m 51s
6m 51s
SUCCESS job test-backend-lint
test-backend-lint
876691
4m 12s
4m 12s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
12m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
14m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
13m 33s
13m 33s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
13m 32s
13m 32s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
15m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
28m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
30m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
29m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876629
1m 28s
1m 28s
SUCCESS job build-frontend
build-frontend
876633
2m 3s
2m 3s
SUCCESS job test-frontend
test-frontend
876644
1m 40s
1m 40s
SUCCESS job build-backend
build-backend
876630
1m 9s
1m 9s
SUCCESS job phpstan
phpstan
876631
1m 4s
1m 4s
SUCCESS job prepare_deploy_revision_prod
prepare_deploy_revision_prod
876646
50s
50s
SUCCESS job build_docker_backend_code_prod
build_docker_backend_code_prod
876649
1m 56s
1m 56s
SUCCESS job build_docker_worker_code_prod...
|
NULL
|
|
76406
|
NULL
|
0
|
2026-04-24T07:53:32.522106+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777017212522_m1.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57703
57703
RUNNING workflow setup-workflow. Collapse the workflow jobs list.
Status Running Running
Running
5s
remain
Info Outline
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
b1d5c77
Merge branch 'master' into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
23s ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
RUNNING job setup
setup
876698
1m 24s
1m 24s
app
57702
57702
CANCELED workflow setup-workflow. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
deacf36
Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
1m ago
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
CANCELED job setup
setup
876697
1m 48s
1m 48s
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
9m 22s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
11m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
6m 51s
6m 51s
SUCCESS job test-backend-lint
test-backend-lint
876691
4m 12s
4m 12s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
12m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
14m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
13m 33s
13m 33s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
13m 32s
13m 32s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
15m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
28m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
30m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
29m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.064444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57703","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57703","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372-ai-reports-promotion-pages","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372-ai-reports-promotion-pages","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"b1d5c77","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'master' into JY-20372-ai-reports-promotion-pages","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23s ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876698","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 24s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 24s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57702","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57702","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372-ai-reports-promotion-pages","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372-ai-reports-promotion-pages","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deacf36","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876697","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57701","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57701","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9m 22s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876688","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876692","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876693","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 41s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 41s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876689","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"50s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"50s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876690","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876694","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 28s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 28s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876695","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"6m 51s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m 51s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876691","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 12s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 12s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876696","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.32951388,"top":0.0,"width":0.06979167,"height":0.031666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.3517361,"top":0.0,"width":0.03923611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.44409722,"top":0.0,"width":0.07326389,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.44409722,"top":0.0,"width":0.07326389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52847224,"top":0.0,"width":0.023263888,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.0,"width":0.18784723,"height":0.023333333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"bounds":{"left":0.63125,"top":0.0,"width":0.042013887,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"bounds":{"left":0.67604166,"top":0.0,"width":0.13055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.0,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.0,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.0,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876687","depth":16,"bounds":{"left":0.38923612,"top":0.0,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 1s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 1s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.17465279,"top":0.049444444,"width":0.017361112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57700","depth":12,"bounds":{"left":0.17465279,"top":0.07277778,"width":0.029166667,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57700","depth":13,"bounds":{"left":0.17465279,"top":0.07388889,"width":0.029166667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.3045139,"top":0.05277778,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"bounds":{"left":0.32951388,"top":0.055,"width":0.074652776,"height":0.031666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"bounds":{"left":0.3517361,"top":0.06111111,"width":0.044097222,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.44409722,"top":0.059444446,"width":0.09548611,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.44409722,"top":0.060555555,"width":0.09548611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.63125,"top":0.050555557,"width":0.19791667,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.63125,"top":0.051666666,"width":0.19791667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.07666667,"width":0.26666668,"height":0.046666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"bounds":{"left":0.63125,"top":0.078888886,"width":0.041319445,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"bounds":{"left":0.63125,"top":0.078888886,"width":0.25659722,"height":0.042777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.060555555,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.060555555,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.15833333,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.32534721,"top":0.15444444,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.35729167,"top":0.15833333,"width":0.07048611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876678","depth":16,"bounds":{"left":0.43333334,"top":0.15833333,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 18s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 18s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.19,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.19388889,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876681","depth":16,"bounds":{"left":0.43020833,"top":0.19388889,"width":0.034027778,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"13m 33s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13m 33s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.22555555,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.22944444,"width":0.0625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876682","depth":16,"bounds":{"left":0.4253472,"top":0.22944444,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-backend","depth":14,"bounds":{"left":0.32534721,"top":0.2611111,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.35729167,"top":0.265,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876679","depth":16,"bounds":{"left":0.43020833,"top":0.265,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"13m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job phpstan","depth":14,"bounds":{"left":0.32534721,"top":0.29666665,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.35729167,"top":0.30055556,"width":0.03784722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876685","depth":16,"bounds":{"left":0.40069443,"top":0.30055556,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"bounds":{"left":0.32534721,"top":0.33222222,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.3361111,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876683","depth":16,"bounds":{"left":0.38923612,"top":0.3361111,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test","depth":14,"bounds":{"left":0.32534721,"top":0.36777776,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.35729167,"top":0.37166667,"width":0.018055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876684","depth":16,"bounds":{"left":0.38090277,"top":0.37166667,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-backend-lint","depth":14,"bounds":{"left":0.32534721,"top":0.40333334,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.35729167,"top":0.4072222,"width":0.08125,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876680","depth":16,"bounds":{"left":0.44409722,"top":0.4072222,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job sonar_cloud","depth":14,"bounds":{"left":0.32534721,"top":0.43888888,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.35729167,"top":0.44277778,"width":0.05625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876686","depth":16,"bounds":{"left":0.41909721,"top":0.44277778,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.3045139,"top":0.49888888,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.32951388,"top":0.5011111,"width":0.06979167,"height":0.032222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.3517361,"top":0.50722224,"width":0.03923611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.44409722,"top":0.50555557,"width":0.07326389,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.44409722,"top":0.50722224,"width":0.07326389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52847224,"top":0.51,"width":0.023263888,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.63125,"top":0.49666667,"width":0.19791667,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.63125,"top":0.4977778,"width":0.19791667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.5227778,"width":0.26666668,"height":0.046666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"bounds":{"left":0.63125,"top":0.525,"width":0.041319445,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"bounds":{"left":0.63125,"top":0.525,"width":0.25659722,"height":0.042777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.50722224,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.50722224,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.60444444,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.60055554,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.60444444,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876677","depth":16,"bounds":{"left":0.38923612,"top":0.60444444,"width":0.034722224,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.17465279,"top":0.67333335,"width":0.017361112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57699","depth":12,"bounds":{"left":0.17465279,"top":0.6961111,"width":0.029513888,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57699","depth":13,"bounds":{"left":0.17465279,"top":0.69777775,"width":0.029513888,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.3045139,"top":0.6761111,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.32951388,"top":0.67833334,"width":0.06979167,"height":0.032222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.3517361,"top":0.685,"width":0.03923611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.44409722,"top":0.68333334,"width":0.09548611,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.44409722,"top":0.6844444,"width":0.09548611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"bounds":{"left":0.63125,"top":0.67388886,"width":0.124305554,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"bounds":{"left":0.63125,"top":0.675,"width":0.124305554,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.7,"width":0.26666668,"height":0.046666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"bounds":{"left":0.63125,"top":0.7022222,"width":0.041666668,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"bounds":{"left":0.63125,"top":0.7022222,"width":0.18333334,"height":0.042777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.6844444,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.6844444,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.7816667,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.32534721,"top":0.7777778,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.35729167,"top":0.7816667,"width":0.07048611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876659","depth":16,"bounds":{"left":0.43333334,"top":0.7816667,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.81333333,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.81722224,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876660","depth":16,"bounds":{"left":0.43020833,"top":0.81722224,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 55s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 55s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.8488889,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.8527778,"width":0.0625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876661","depth":16,"bounds":{"left":0.4253472,"top":0.8527778,"width":0.034027778,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 57s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 57s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.32534721,"top":0.8844444,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.35729167,"top":0.8883333,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876662","depth":16,"bounds":{"left":0.43020833,"top":0.8883333,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.32534721,"top":0.92,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.35729167,"top":0.92388886,"width":0.03784722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876663","depth":16,"bounds":{"left":0.40069443,"top":0.92388886,"width":0.036111113,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job prepare_deploy_revision_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.95555556,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prepare_deploy_revision_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.95944446,"width":0.15069444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876668","depth":16,"bounds":{"left":0.51354164,"top":0.95944446,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_backend_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.9911111,"width":0.6746528,"height":0.0088889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_backend_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.995,"width":0.17048611,"height":0.004999995},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876669","depth":16,"bounds":{"left":0.53333336,"top":0.995,"width":0.035416666,"height":0.004999995},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":1.0,"width":0.6746528,"height":-0.026666641},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":1.0,"width":0.16215278,"height":-0.030555606},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876671","depth":16,"bounds":{"left":0.525,"top":1.0,"width":0.033680554,"height":-0.030555606},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 56s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 56s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_video_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":1.0,"width":0.6746528,"height":-0.062222242},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_video_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":1.0,"width":0.19166666,"height":-0.06611109},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876670","depth":16,"bounds":{"left":0.5545139,"top":1.0,"width":0.034722224,"height":-0.06611109},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job db_migrations_subenv","depth":14,"bounds":{"left":0.32534721,"top":1.0,"width":0.6746528,"height":-0.097777724},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"db_migrations_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876672","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_backend_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_backend_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876674","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"5m 13s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m 13s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876676","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_video_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_video_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876673","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"46s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"46s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_frontend_assets_to_s3_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_frontend_assets_to_s3_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876675","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876664","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"58s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"58s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876665","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876666","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job sonar_cloud","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876667","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.0,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876628","depth":16,"bounds":{"left":0.38923612,"top":0.0,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.17465279,"top":0.03722222,"width":0.017361112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57698","depth":12,"bounds":{"left":0.17465279,"top":0.06,"width":0.029513888,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57698","depth":13,"bounds":{"left":0.17465279,"top":0.06111111,"width":0.029513888,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.44409722,"top":0.046666667,"width":0.09548611,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.44409722,"top":0.048333332,"width":0.09548611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3ac70b3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.048333332,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.048333332,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"29m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.14666666,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
301707782656552367
|
-8356600059851278672
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57703
57703
RUNNING workflow setup-workflow. Collapse the workflow jobs list.
Status Running Running
Running
5s
remain
Info Outline
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
b1d5c77
Merge branch 'master' into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
23s ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
RUNNING job setup
setup
876698
1m 24s
1m 24s
app
57702
57702
CANCELED workflow setup-workflow. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
setup-workflow
setup-workflow
SETUP
JY-20372-ai-reports-promotion-pages
JY-20372-ai-reports-promotion-pages
Open commit on version control site
deacf36
Merge branch 'JY-20372-ai-reports-promotion-pages' of github.com:jiminny/app into JY-20372-ai-reports-promotion-pages
Push
Commit pushed
Copy timestamp to clipboard
1m ago
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
CANCELED job setup
setup
876697
1m 48s
1m 48s
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
9m 22s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
11m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
6m 51s
6m 51s
SUCCESS job test-backend-lint
test-backend-lint
876691
4m 12s
4m 12s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
12m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
14m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
13m 33s
13m 33s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
13m 32s
13m 32s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
15m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
28m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
30m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
29m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs...
|
NULL
|
|
76383
|
NULL
|
0
|
2026-04-24T07:48:43.701048+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016923701_m2.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 11s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
2m 2s
2m 2s
RUNNING job test-backend-lint
test-backend-lint
876691
4m 16s
4m 16s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
7m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
8m 44s
8m 44s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
8m 43s
8m 43s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
24m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
25m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
25m ago
Copy timestamp duration to clipboard...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.07679521,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.3312051,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.15924202,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"bounds":{"left":0.31831783,"top":0.061452515,"width":0.044215426,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"bounds":{"left":0.9371675,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"bounds":{"left":0.9517952,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"bounds":{"left":0.96642286,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"bounds":{"left":0.98105055,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"bounds":{"left":0.3179854,"top":0.10295291,"width":0.01462766,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"bounds":{"left":0.3159907,"top":0.15083799,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"bounds":{"left":0.31881648,"top":0.1839585,"width":0.012965426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"bounds":{"left":0.3159907,"top":0.21308859,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"bounds":{"left":0.31499335,"top":0.2462091,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"bounds":{"left":0.3159907,"top":0.2753392,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"bounds":{"left":0.31632313,"top":0.3084597,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"bounds":{"left":0.3159907,"top":0.33798882,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"bounds":{"left":0.31648937,"top":0.37071028,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"bounds":{"left":0.3159907,"top":0.40023944,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"bounds":{"left":0.31665558,"top":0.4329609,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"bounds":{"left":0.3159907,"top":0.46249002,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"bounds":{"left":0.31632313,"top":0.49561054,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"bounds":{"left":0.3159907,"top":0.52474064,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"bounds":{"left":0.32130983,"top":0.55786115,"width":0.007978723,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"bounds":{"left":0.3159907,"top":0.58699125,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"bounds":{"left":0.32064494,"top":0.6201117,"width":0.00930851,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.31831783,"top":0.9345571,"width":0.013962766,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.31831783,"top":0.96727854,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"bounds":{"left":0.34823802,"top":0.1245012,"width":0.042054523,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"bounds":{"left":0.35887632,"top":0.12609737,"width":0.030086435,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"bounds":{"left":0.3957779,"top":0.1245012,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"bounds":{"left":0.40641624,"top":0.12609737,"width":0.009807181,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"bounds":{"left":0.35887632,"top":0.16400638,"width":0.016954787,"height":0.029130088},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"bounds":{"left":0.35887632,"top":0.16480447,"width":0.016954787,"height":0.027533919},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"bounds":{"left":0.34823802,"top":0.19952115,"width":0.024102394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"bounds":{"left":0.34823802,"top":0.20151636,"width":0.024102394,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"bounds":{"left":0.3776596,"top":0.19952115,"width":0.021110373,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.3776596,"top":0.20151636,"width":0.021110373,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"bounds":{"left":0.4040891,"top":0.19952115,"width":0.020611702,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"bounds":{"left":0.4040891,"top":0.20151636,"width":0.020611702,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"bounds":{"left":0.86984706,"top":0.16400638,"width":0.057845745,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"bounds":{"left":0.88580453,"top":0.17318435,"width":0.03656915,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"bounds":{"left":0.93301195,"top":0.16400638,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"bounds":{"left":0.34823802,"top":0.23782921,"width":0.053523935,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"bounds":{"left":0.36186835,"top":0.24700718,"width":0.026263298,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"bounds":{"left":0.40442154,"top":0.23782921,"width":0.034242023,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"bounds":{"left":0.4167221,"top":0.24700718,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"bounds":{"left":0.44132313,"top":0.23782921,"width":0.053025264,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"bounds":{"left":0.45362368,"top":0.24700718,"width":0.027094414,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"bounds":{"left":0.49700797,"top":0.23782921,"width":0.051030584,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"bounds":{"left":0.5093085,"top":0.24700718,"width":0.025099734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"bounds":{"left":0.55069816,"top":0.23782921,"width":0.043218084,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"bounds":{"left":0.55502,"top":0.24700718,"width":0.0066489363,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"bounds":{"left":0.5616689,"top":0.24700718,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"bounds":{"left":0.93301195,"top":0.2386273,"width":0.0546875,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"bounds":{"left":0.94797206,"top":0.24780527,"width":0.034075797,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"bounds":{"left":0.35355717,"top":0.3196329,"width":0.015292553,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"bounds":{"left":0.42603058,"top":0.3196329,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"bounds":{"left":0.48287898,"top":0.3196329,"width":0.018284574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"bounds":{"left":0.5728058,"top":0.3196329,"width":0.03274601,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"bounds":{"left":0.70578456,"top":0.3196329,"width":0.025764627,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"bounds":{"left":0.8636968,"top":0.3196329,"width":0.009640957,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"bounds":{"left":0.9019282,"top":0.3196329,"width":0.01662234,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"bounds":{"left":0.92918885,"top":0.3196329,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.34796488,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57701","depth":12,"bounds":{"left":0.3538896,"top":0.3643256,"width":0.013297873,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57701","depth":13,"bounds":{"left":0.3538896,"top":0.36552274,"width":0.013297873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.3499601,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"bounds":{"left":0.42802528,"top":0.35155627,"width":0.03274601,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"bounds":{"left":0.43866357,"top":0.35634476,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14m 11s","depth":13,"bounds":{"left":0.42802528,"top":0.38028732,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"bounds":{"left":0.4453125,"top":0.38028732,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"bounds":{"left":0.46210107,"top":0.37470073,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":0.35514766,"width":0.045711435,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":0.35594574,"width":0.045711435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.34836394,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.349162,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.36711892,"width":0.08992686,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"bounds":{"left":0.5724734,"top":0.36871508,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"bounds":{"left":0.59391624,"top":0.36871508,"width":0.0625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.35594574,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.35594574,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.85056514,"top":0.34836394,"width":0.027759308,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"bounds":{"left":0.8562167,"top":0.3575419,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89511305,"top":0.34836394,"width":0.028424202,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.35155627,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.42657623,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.42418197,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.42657623,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876688","depth":16,"bounds":{"left":0.47772607,"top":0.42657623,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 39s","depth":14,"bounds":{"left":0.90176195,"top":0.42418197,"width":0.016456118,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 39s","depth":15,"bounds":{"left":0.90176195,"top":0.42657623,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.44972068,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.4521149,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876692","depth":16,"bounds":{"left":0.47623006,"top":0.4521149,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.44972068,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.4521149,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.47525936,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.47765362,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876693","depth":16,"bounds":{"left":0.4739029,"top":0.47765362,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 41s","depth":14,"bounds":{"left":0.9019282,"top":0.47525936,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 41s","depth":15,"bounds":{"left":0.9019282,"top":0.47765362,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.5007981,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.50319237,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876689","depth":16,"bounds":{"left":0.47623006,"top":0.50319237,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"50s","depth":14,"bounds":{"left":0.9097407,"top":0.5007981,"width":0.008477394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"50s","depth":15,"bounds":{"left":0.9097407,"top":0.50319237,"width":0.008477394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.5263368,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.52873105,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876690","depth":16,"bounds":{"left":0.46210107,"top":0.52873105,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"bounds":{"left":0.9019282,"top":0.5263368,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"bounds":{"left":0.9019282,"top":0.52873105,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.5518755,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.55426973,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876694","depth":16,"bounds":{"left":0.4566157,"top":0.55426973,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 28s","depth":14,"bounds":{"left":0.9019282,"top":0.5518755,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 28s","depth":15,"bounds":{"left":0.9019282,"top":0.55426973,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"bounds":{"left":0.42603058,"top":0.5774142,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":0.5798085,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876695","depth":16,"bounds":{"left":0.45262632,"top":0.5798085,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 2s","depth":14,"bounds":{"left":0.90425533,"top":0.5774142,"width":0.013962766,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 2s","depth":15,"bounds":{"left":0.90425533,"top":0.5798085,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":0.6029529,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":0.60534716,"width":0.038896278,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876691","depth":16,"bounds":{"left":0.48287898,"top":0.60534716,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 16s","depth":14,"bounds":{"left":0.90176195,"top":0.6029529,"width":0.016456118,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 16s","depth":15,"bounds":{"left":0.90176195,"top":0.60534716,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":0.6308859,"width":0.02642952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876696","depth":16,"bounds":{"left":0.47041222,"top":0.6308859,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.6715882,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.67318434,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.6775738,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.6763767,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.6771748,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.67917,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.669992,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.6707901,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.688747,"width":0.08992686,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"bounds":{"left":0.5724734,"top":0.6903432,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"bounds":{"left":0.59391624,"top":0.6903432,"width":0.0625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.6771748,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.6771748,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.8507314,"top":0.669992,"width":0.027593086,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7m ago","depth":15,"bounds":{"left":0.85638297,"top":0.67877096,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89877,"top":0.669992,"width":0.024767287,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.67318434,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.67318434,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.67318434,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.67318434,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.67318434,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.73064643,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.7278532,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.73064643,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876687","depth":16,"bounds":{"left":0.4566157,"top":0.73064643,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 1s","depth":14,"bounds":{"left":0.9055851,"top":0.7278532,"width":0.012632979,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 1s","depth":15,"bounds":{"left":0.9055851,"top":0.73064643,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.7801277,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57700","depth":12,"bounds":{"left":0.3538896,"top":0.7964884,"width":0.013962766,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57700","depth":13,"bounds":{"left":0.3538896,"top":0.7972865,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.7821229,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"bounds":{"left":0.42802528,"top":0.78371906,"width":0.035738032,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"bounds":{"left":0.43866357,"top":0.7881085,"width":0.021110373,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":0.7869114,"width":0.045711435,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":0.7881085,"width":0.045711435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.78052676,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.7813248,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.7992817,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"bounds":{"left":0.5724734,"top":0.80087787,"width":0.019780586,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"bounds":{"left":0.5724734,"top":0.80087787,"width":0.12283909,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.7881085,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.7881085,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.8484042,"top":0.78052676,"width":0.029920213,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10m ago","depth":15,"bounds":{"left":0.8540558,"top":0.7897047,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89660907,"top":0.78052676,"width":0.026928192,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.78371906,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.78371906,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.78371906,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.78371906,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.78371906,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.8579409,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.85514766,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.8579409,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876678","depth":16,"bounds":{"left":0.47772607,"top":0.8579409,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 18s","depth":14,"bounds":{"left":0.9025931,"top":0.85514766,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 18s","depth":15,"bounds":{"left":0.9025931,"top":0.8579409,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.88068634,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.88347965,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876681","depth":16,"bounds":{"left":0.47623006,"top":0.88347965,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 44s","depth":14,"bounds":{"left":0.9009308,"top":0.88068634,"width":0.017287234,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 44s","depth":15,"bounds":{"left":0.9009308,"top":0.88347965,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.9062251,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.90901834,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876682","depth":16,"bounds":{"left":0.4739029,"top":0.90901834,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":0.9062251,"width":0.005485372,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":0.90901834,"width":0.005485372,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.93176377,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.9345571,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876679","depth":16,"bounds":{"left":0.47623006,"top":0.9345571,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 43s","depth":14,"bounds":{"left":0.90109706,"top":0.93176377,"width":0.017121011,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 43s","depth":15,"bounds":{"left":0.90109706,"top":0.9345571,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.95730245,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.96009576,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876685","depth":16,"bounds":{"left":0.46210107,"top":0.96009576,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":0.95730245,"width":0.005485372,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":0.96009576,"width":0.005485372,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"bounds":{"left":0.42603058,"top":0.9828412,"width":0.3254654,"height":0.017158806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.9856345,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876683","depth":16,"bounds":{"left":0.4566157,"top":0.9856345,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":0.9828412,"width":0.005485372,"height":0.017158806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":0.9856345,"width":0.005485372,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test","depth":14,"bounds":{"left":0.42603058,"top":1.0,"width":0.3254654,"height":-0.008379936},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":1.0,"width":0.008643617,"height":-0.011173129},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876684","depth":16,"bounds":{"left":0.45262632,"top":1.0,"width":0.017121011,"height":-0.011173129},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.008379936},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.011173129},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":1.0,"width":0.3254654,"height":-0.03391862},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":1.0,"width":0.038896278,"height":-0.03671193},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876680","depth":16,"bounds":{"left":0.48287898,"top":1.0,"width":0.016954787,"height":-0.03671193},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.03391862},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.03671193},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job sonar_cloud","depth":14,"bounds":{"left":0.42603058,"top":1.0,"width":0.3254654,"height":-0.059457302},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":1.0,"width":0.026928192,"height":-0.062250614},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876686","depth":16,"bounds":{"left":0.4709109,"top":1.0,"width":0.017121011,"height":-0.062250614},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.059457302},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"bounds":{"left":0.9127327,"top":1.0,"width":0.005485372,"height":-0.062250614},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876677","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57699","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57699","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876659","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876660","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 55s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 55s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876661","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 57s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 57s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876662","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876663","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job prepare_deploy_revision_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prepare_deploy_revision_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876668","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_backend_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_backend_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876669","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876671","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 56s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 56s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_video_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_video_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876670","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job db_migrations_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"db_migrations_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876672","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_backend_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_backend_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876674","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"5m 13s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m 13s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876676","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_video_code_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_video_code_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876673","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"46s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"46s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_frontend_assets_to_s3_subenv","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_frontend_assets_to_s3_subenv","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876675","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876664","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"58s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"58s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876665","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876666","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job sonar_cloud","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876667","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.90143657,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.9030327,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.9074222,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.9062251,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.90702313,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.90901834,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.90702313,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.90702313,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"25m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89660907,"top":0.89984035,"width":0.026928192,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.9030327,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.97725457,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.9744613,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.97725457,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876628","depth":16,"bounds":{"left":0.4566157,"top":0.97725457,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.9744613,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.97725457,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.00831117,"height":-0.026735783},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57698","depth":12,"bounds":{"left":0.3538896,"top":1.0,"width":0.01412899,"height":-0.043096542},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57698","depth":13,"bounds":{"left":0.3538896,"top":1.0,"width":0.01412899,"height":-0.04389465},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.033519506},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":1.0,"width":0.045711435,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3ac70b3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":1.0,"width":0.011303191,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":1.0,"width":0.034574468,"height":-0.034716725},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"25m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
8287808638275343091
|
866491601504859832
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 11s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
2m 2s
2m 2s
RUNNING job test-backend-lint
test-backend-lint
876691
4m 16s
4m 16s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
7m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
8m 44s
8m 44s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
8m 43s
8m 43s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
24m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint
test-backend-lint
876666
4m 34s
4m 34s
SUCCESS job sonar_cloud
sonar_cloud
876667
1m 48s
1m 48s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
25m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876628
1m 29s
1m 29s
app
57698
57698
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
master
master
Open commit on version control site
3ac70b3
Merge pull request #12012 from jiminny/JY-20735-remove-code-switching-assembly-prompt
Push
Commit pushed
Copy timestamp to clipboard
25m ago
Copy timestamp duration to clipboard...
|
NULL
|
|
76382
|
NULL
|
0
|
2026-04-24T07:48:43.597740+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016923597_m1.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 12s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
2m 1s
2m 1s
RUNNING job test-backend-lint
test-backend-lint
876691
4m 15s
4m 15s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
7m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
8m 44s
8m 44s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
8m 43s
8m 43s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
24m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Summary - app in Jiminny SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary - app in Jiminny SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.064444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57701","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57701","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14m 12s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876688","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876692","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876693","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 41s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 41s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876689","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"50s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"50s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876690","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876694","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 28s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 28s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876695","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2m 1s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2m 1s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876691","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876696","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"84bed7b","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 add test coverage","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876687","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 1s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 1s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57700","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57700","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Canceled Canceled","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Canceled","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876678","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 18s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 18s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876681","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 44s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 44s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876682","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job build-backend","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876679","depth":16,"bounds":{"left":0.43020833,"top":0.0,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 43s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 43s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job phpstan","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.03784722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876685","depth":16,"bounds":{"left":0.40069443,"top":0.0,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job setup","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876683","depth":16,"bounds":{"left":0.38923612,"top":0.0,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test","depth":14,"bounds":{"left":0.32534721,"top":0.011666667,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.35729167,"top":0.015555556,"width":0.018055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876684","depth":16,"bounds":{"left":0.38090277,"top":0.015555556,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job test-backend-lint","depth":14,"bounds":{"left":0.32534721,"top":0.047222223,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.35729167,"top":0.05111111,"width":0.08125,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876680","depth":16,"bounds":{"left":0.44409722,"top":0.05111111,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CANCELED job sonar_cloud","depth":14,"bounds":{"left":0.32534721,"top":0.082777776,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.35729167,"top":0.086666666,"width":0.05625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876686","depth":16,"bounds":{"left":0.41909721,"top":0.086666666,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.3045139,"top":0.14277777,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.32951388,"top":0.145,"width":0.06979167,"height":0.032222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.3517361,"top":0.15166667,"width":0.03923611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.44409722,"top":0.15,"width":0.07326389,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.44409722,"top":0.15111111,"width":0.07326389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52847224,"top":0.1538889,"width":0.023263888,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.63125,"top":0.14055556,"width":0.19791667,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.63125,"top":0.14166667,"width":0.19791667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.16666667,"width":0.26666668,"height":0.046666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2b160b5","depth":16,"bounds":{"left":0.63125,"top":0.16888888,"width":0.041319445,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 move user pilot tracking changes to separated PR","depth":16,"bounds":{"left":0.63125,"top":0.16888888,"width":0.25659722,"height":0.042777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.15111111,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.15111111,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.24833333,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.24444444,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.24833333,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876677","depth":16,"bounds":{"left":0.38923612,"top":0.24833333,"width":0.034722224,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"39s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"39s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.17465279,"top":0.3172222,"width":0.017361112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57699","depth":12,"bounds":{"left":0.17465279,"top":0.34055555,"width":0.029513888,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57699","depth":13,"bounds":{"left":0.17465279,"top":0.34166667,"width":0.029513888,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.3045139,"top":0.32,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.32951388,"top":0.32222223,"width":0.06979167,"height":0.032222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.3517361,"top":0.3288889,"width":0.03923611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.44409722,"top":0.32722223,"width":0.09548611,"height":0.021666666},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.44409722,"top":0.32833335,"width":0.09548611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"bounds":{"left":0.63125,"top":0.31777778,"width":0.124305554,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"bounds":{"left":0.63125,"top":0.31944445,"width":0.124305554,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.63125,"top":0.34444445,"width":0.26666668,"height":0.046666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ad8c862","depth":16,"bounds":{"left":0.63125,"top":0.34611112,"width":0.041666668,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"bounds":{"left":0.63125,"top":0.34611112,"width":0.18333334,"height":0.042777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.93680555,"top":0.32833335,"width":0.023611112,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.96319443,"top":0.32833335,"width":0.03680557,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.26944444,"top":0.42555556,"width":0.022569444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.32534721,"top":0.42222223,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.35729167,"top":0.42555556,"width":0.07048611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876659","depth":16,"bounds":{"left":0.43333334,"top":0.42555556,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.45777777,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.4611111,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876660","depth":16,"bounds":{"left":0.43020833,"top":0.4611111,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 55s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 55s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.32534721,"top":0.49333334,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.35729167,"top":0.49666667,"width":0.0625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876661","depth":16,"bounds":{"left":0.4253472,"top":0.49666667,"width":0.034027778,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 57s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 57s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.32534721,"top":0.5288889,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.35729167,"top":0.5322222,"width":0.06736111,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876662","depth":16,"bounds":{"left":0.43020833,"top":0.5322222,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.32534721,"top":0.5644444,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.35729167,"top":0.56777775,"width":0.03784722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876663","depth":16,"bounds":{"left":0.40069443,"top":0.56777775,"width":0.036111113,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 23s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 23s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job prepare_deploy_revision_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.6,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prepare_deploy_revision_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.60333335,"width":0.15069444,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876668","depth":16,"bounds":{"left":0.51354164,"top":0.60333335,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_backend_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.63555557,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_backend_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.6388889,"width":0.17048611,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876669","depth":16,"bounds":{"left":0.53333336,"top":0.6388889,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 54s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 54s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.6711111,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.67444444,"width":0.16215278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876671","depth":16,"bounds":{"left":0.525,"top":0.67444444,"width":0.033680554,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 56s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 56s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build_docker_worker_video_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.70666665,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_docker_worker_video_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.71,"width":0.19166666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876670","depth":16,"bounds":{"left":0.5545139,"top":0.71,"width":0.034722224,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job db_migrations_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.74222225,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"db_migrations_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.7455556,"width":0.10451389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876672","depth":16,"bounds":{"left":0.46736112,"top":0.7455556,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_backend_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.7777778,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_backend_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.7811111,"width":0.17777778,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876674","depth":16,"bounds":{"left":0.540625,"top":0.7811111,"width":0.034722224,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"5m 13s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m 13s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.81333333,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.81666666,"width":0.16979167,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876676","depth":16,"bounds":{"left":0.5326389,"top":0.81666666,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_docker_worker_video_code_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.8488889,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_docker_worker_video_code_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.8522222,"width":0.19895834,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876673","depth":16,"bounds":{"left":0.56180555,"top":0.8522222,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"46s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"46s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job deploy_frontend_assets_to_s3_subenv","depth":14,"bounds":{"left":0.32534721,"top":0.8844444,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"deploy_frontend_assets_to_s3_subenv","depth":15,"bounds":{"left":0.35729167,"top":0.8877778,"width":0.17847222,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876675","depth":16,"bounds":{"left":0.54131943,"top":0.8877778,"width":0.034722224,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 4s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 4s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.92,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.92333335,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876664","depth":16,"bounds":{"left":0.38923612,"top":0.92333335,"width":0.03576389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"58s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"58s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"bounds":{"left":0.32534721,"top":0.95555556,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.35729167,"top":0.9588889,"width":0.018055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876665","depth":16,"bounds":{"left":0.38090277,"top":0.9588889,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"8m 34s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8m 34s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"bounds":{"left":0.32534721,"top":0.9911111,"width":0.6746528,"height":0.0088889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-1566836784055955748
|
-8356881535935286600
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Summary - app in Jiminny SonarQube Cloud
Summary - app in Jiminny SonarQube Cloud
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57701
57701
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 12s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876688
1m 39s
1m 39s
SUCCESS job build-frontend
build-frontend
876692
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876693
2m 41s
2m 41s
SUCCESS job build-backend
build-backend
876689
50s
50s
SUCCESS job phpstan
phpstan
876690
1m 23s
1m 23s
SUCCESS job setup
setup
876694
1m 28s
1m 28s
RUNNING job test
test
876695
2m 1s
2m 1s
RUNNING job test-backend-lint
test-backend-lint
876691
4m 15s
4m 15s
sonar_cloud
876696
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
84bed7b
JY-20157 add test coverage
Push
Commit pushed
Copy timestamp to clipboard
7m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876687
1m 1s
1m 1s
app
57700
57700
CANCELED workflow build_accept_deploy. Collapse the workflow jobs list.
Status Canceled Canceled
Canceled
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876678
1m 18s
1m 18s
CANCELED job build-frontend
build-frontend
876681
8m 44s
8m 44s
CANCELED job test-frontend
test-frontend
876682
0s
0s
CANCELED job build-backend
build-backend
876679
8m 43s
8m 43s
CANCELED job phpstan
phpstan
876685
0s
0s
CANCELED job setup
setup
876683
0s
0s
CANCELED job test
test
876684
0s
0s
CANCELED job test-backend-lint
test-backend-lint
876680
0s
0s
CANCELED job sonar_cloud
sonar_cloud
876686
0s
0s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
2b160b5
JY-20157 move user pilot tracking changes to separated PR
Push
Commit pushed
Copy timestamp to clipboard
10m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876677
39s
39s
app
57699
57699
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
ad8c862
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
24m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876659
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876660
1m 55s
1m 55s
SUCCESS job test-frontend
test-frontend
876661
1m 57s
1m 57s
SUCCESS job build-backend
build-backend
876662
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876663
1m 23s
1m 23s
SUCCESS job prepare_deploy_revision_subenv
prepare_deploy_revision_subenv
876668
1m 4s
1m 4s
SUCCESS job build_docker_backend_code_subenv
build_docker_backend_code_subenv
876669
1m 54s
1m 54s
SUCCESS job build_docker_worker_code_subenv
build_docker_worker_code_subenv
876671
1m 56s
1m 56s
SUCCESS job build_docker_worker_video_code_subenv
build_docker_worker_video_code_subenv
876670
1m 52s
1m 52s
SUCCESS job db_migrations_subenv
db_migrations_subenv
876672
15s
15s
SUCCESS job deploy_docker_backend_code_subenv
deploy_docker_backend_code_subenv
876674
5m 13s
5m 13s
SUCCESS job deploy_docker_worker_code_subenv
deploy_docker_worker_code_subenv
876676
1m 32s
1m 32s
SUCCESS job deploy_docker_worker_video_code_subenv
deploy_docker_worker_video_code_subenv
876673
46s
46s
SUCCESS job deploy_frontend_assets_to_s3_subenv
deploy_frontend_assets_to_s3_subenv
876675
1m 4s
1m 4s
SUCCESS job setup
setup
876664
58s
58s
SUCCESS job test
test
876665
8m 34s
8m 34s
SUCCESS job test-backend-lint...
|
NULL
|
|
76353
|
NULL
|
0
|
2026-04-24T07:43:43.627756+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016623627_m2.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEventTest faVsco.js – TrackAutomatedReportGeneratedEventTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
2 files committed
JY-20157 add test coverage
text/ 2 files committed
JY-20157 add test coverage
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"2 files committed","depth":2,"bounds":{"left":0.8753325,"top":0.91300875,"width":0.100398935,"height":0.013567438},"role_description":"text"},{"role":"AXTextField","text":"JY-20157 add test coverage","depth":3,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.11037234,"height":0.013567438},"value":"JY-20157 add test coverage","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.05817819,"height":0.013567438},"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Edit Commit Message…","depth":2,"bounds":{"left":0.8753325,"top":0.9481245,"width":0.048204787,"height":0.013567438},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.796875,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TrackAutomatedReportGeneratedEventTest","depth":6,"bounds":{"left":0.8121675,"top":0.019952115,"width":0.103390954,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TrackAutomatedReportGeneratedEventTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TrackAutomatedReportGeneratedEventTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.59541225,"top":0.32322428,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.3216281,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.3216281,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.070231445,"width":0.34375,"height":0.92976856},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"bounds":{"left":0.96210104,"top":0.10055866,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.30851063,"top":0.05027933,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.31948137,"top":0.05027933,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.328125,"top":0.05027933,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.33676863,"top":0.05027933,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.34541222,"top":0.05027933,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
105150503854657824
|
8404466858115443482
|
app_switch
|
accessibility
|
NULL
|
2 files committed
JY-20157 add test coverage
text/ 2 files committed
JY-20157 add test coverage
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
76352
|
NULL
|
0
|
2026-04-24T07:43:43.475854+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016623475_m1.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEventTest faVsco.js – TrackAutomatedReportGeneratedEventTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
2 files committed
JY-20157 add test coverage
text/ 2 files committed
JY-20157 add test coverage
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"2 files committed","depth":2,"role_description":"text"},{"role":"AXTextField","text":"JY-20157 add test coverage","depth":3,"value":"JY-20157 add test coverage","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Edit Commit Message…","depth":2,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TrackAutomatedReportGeneratedEventTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TrackAutomatedReportGeneratedEventTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TrackAutomatedReportGeneratedEventTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"43","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}\n\n+++\n\n<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-9028934553602785414
|
8404466858115443482
|
app_switch
|
accessibility
|
NULL
|
2 files committed
JY-20157 add test coverage
text/ 2 files committed
JY-20157 add test coverage
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
43
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
+++
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}...
|
NULL
|
|
76259
|
NULL
|
0
|
2026-04-24T07:38:30.680219+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016310680_m2.jpg...
|
Firefox
|
Login - SonarQube Cloud — Work
|
True
|
sonarcloud.io/login?return_to=%2Fcomponent_measure sonarcloud.io/login?return_to=%2Fcomponent_measures%3Fid%3Djiminny_app%26pullRequest%3D12011%26metric%3Dnew_coverage%26view%3Dlist...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Login - SonarQube Cloud
Login - SonarQube Cloud
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Log in or Sign up with:
Log in or Sign up with:
GitHub GitHub
GitHub
Bitbucket Bitbucket
Bitbucket
Gitlab GitLab
GitLab
Azure DevOps Azure DevOps
Azure DevOps
Only available on Enterprise plan
Log in with SSO
Log in with SSO
By logging in, you're agreeing to our
Terms of Service
Terms of Service
.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Accept All Cookies
Reject All
No, let me choose
Waiting for sonarcloud.io…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.29848364,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.15924202,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Log in or Sign up with:","depth":9,"bounds":{"left":0.6087101,"top":0.22426178,"width":0.0930851,"height":0.0830008},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Log in or Sign up with:","depth":10,"bounds":{"left":0.61668885,"top":0.24381484,"width":0.076961435,"height":0.06344773},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"GitHub GitHub","depth":13,"bounds":{"left":0.6087101,"top":0.3264166,"width":0.0930851,"height":0.0415004},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"GitHub","depth":14,"bounds":{"left":0.62666225,"top":0.33798882,"width":0.023271276,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Bitbucket Bitbucket","depth":13,"bounds":{"left":0.6087101,"top":0.38068634,"width":0.0930851,"height":0.0415004},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitbucket","depth":14,"bounds":{"left":0.62666225,"top":0.39225858,"width":0.032912236,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gitlab GitLab","depth":13,"bounds":{"left":0.6087101,"top":0.4349561,"width":0.0930851,"height":0.0415004},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitLab","depth":14,"bounds":{"left":0.62666225,"top":0.44652835,"width":0.021941489,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Azure DevOps Azure DevOps","depth":13,"bounds":{"left":0.6087101,"top":0.48922586,"width":0.0930851,"height":0.0415004},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azure DevOps","depth":14,"bounds":{"left":0.62666225,"top":0.5007981,"width":0.047041222,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Only available on Enterprise plan","depth":11,"bounds":{"left":0.6140292,"top":0.5837989,"width":0.08228058,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Log in with SSO","depth":10,"bounds":{"left":0.6087101,"top":0.61372703,"width":0.0930851,"height":0.0415004},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Log in with SSO","depth":11,"bounds":{"left":0.62898934,"top":0.6252993,"width":0.05236037,"height":0.018355945},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By logging in, you're agreeing to our","depth":10,"bounds":{"left":0.60954124,"top":0.6763767,"width":0.09125665,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":10,"bounds":{"left":0.63297874,"top":0.6955307,"width":0.04288564,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":11,"bounds":{"left":0.63297874,"top":0.6955307,"width":0.04288564,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.67586434,"top":0.6955307,"width":0.0014960107,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.","depth":11,"bounds":{"left":0.3159907,"top":0.9660814,"width":0.36419547,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Accept All Cookies","depth":12,"bounds":{"left":0.8557181,"top":0.95730245,"width":0.047539894,"height":0.0311253},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Reject All","depth":12,"bounds":{"left":0.9065825,"top":0.95730245,"width":0.04155585,"height":0.0311253},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"No, let me choose","depth":12,"bounds":{"left":0.95146275,"top":0.95810056,"width":0.04155585,"height":0.02952913},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Waiting for sonarcloud.io…","depth":5,"bounds":{"left":0.31200132,"top":0.9876297,"width":0.04637633,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
7424995971034840790
|
-7683330421027052854
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Login - SonarQube Cloud
Login - SonarQube Cloud
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Log in or Sign up with:
Log in or Sign up with:
GitHub GitHub
GitHub
Bitbucket Bitbucket
Bitbucket
Gitlab GitLab
GitLab
Azure DevOps Azure DevOps
Azure DevOps
Only available on Enterprise plan
Log in with SSO
Log in with SSO
By logging in, you're agreeing to our
Terms of Service
Terms of Service
.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Accept All Cookies
Reject All
No, let me choose
Waiting for sonarcloud.io…...
|
NULL
|
|
76258
|
NULL
|
0
|
2026-04-24T07:38:30.766035+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016310766_m1.jpg...
|
Firefox
|
Login - SonarQube Cloud — Work
|
True
|
sonarcloud.io/login?return_to=%2Fcomponent_measure sonarcloud.io/login?return_to=%2Fcomponent_measures%3Fid%3Djiminny_app%26pullRequest%3D12011%26metric%3Dnew_coverage%26view%3Dlist...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Login - SonarQube Cloud
Login - SonarQube Cloud
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Log in or Sign up with:
Log in or Sign up with:
GitHub GitHub
GitHub
Bitbucket Bitbucket
Bitbucket
Gitlab GitLab
GitLab
Azure DevOps Azure DevOps
Azure DevOps
Only available on Enterprise plan
Log in with SSO
Log in with SSO
By logging in, you're agreeing to our
Terms of Service
Terms of Service
.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Accept All Cookies
Reject All
No, let me choose
Waiting for sonarcloud.io…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Log in or Sign up with:","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Log in or Sign up with:","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"GitHub GitHub","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"GitHub","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Bitbucket Bitbucket","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitbucket","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gitlab GitLab","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitLab","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Azure DevOps Azure DevOps","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Azure DevOps","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Only available on Enterprise plan","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Log in with SSO","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Log in with SSO","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By logging in, you're agreeing to our","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.","depth":11,"bounds":{"left":0.09548611,"top":0.0,"width":0.7607639,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Accept All Cookies","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Reject All","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"No, let me choose","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Waiting for sonarcloud.io…","depth":5,"bounds":{"left":0.08715278,"top":0.0,"width":0.096875,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
7424995971034840790
|
-7683330421027052854
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
Login - SonarQube Cloud
Login - SonarQube Cloud
Close tab
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Log in or Sign up with:
Log in or Sign up with:
GitHub GitHub
GitHub
Bitbucket Bitbucket
Bitbucket
Gitlab GitLab
GitLab
Azure DevOps Azure DevOps
Azure DevOps
Only available on Enterprise plan
Log in with SSO
Log in with SSO
By logging in, you're agreeing to our
Terms of Service
Terms of Service
.
By clicking “Accept All Cookies”, you agree to the storing of cookies on your device to enhance site navigation, analyze site usage, and assist in our marketing efforts.
Accept All Cookies
Reject All
No, let me choose
Waiting for sonarcloud.io…...
|
NULL
|
|
76156
|
NULL
|
0
|
2026-04-24T07:33:25.186019+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016005186_m2.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEventTest faVsco.js – TrackAutomatedReportGeneratedEventTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
15
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.796875,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TrackAutomatedReportGeneratedEventTest","depth":6,"bounds":{"left":0.8121675,"top":0.019952115,"width":0.103390954,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TrackAutomatedReportGeneratedEventTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TrackAutomatedReportGeneratedEventTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.59574467,"top":0.32322428,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.60538566,"top":0.3216281,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61269945,"top":0.3216281,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.3200319,"width":0.34375,"height":0.6799681},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"15","depth":4,"bounds":{"left":0.96276593,"top":0.10055866,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9740692,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.98138297,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8210130048459164633
|
-814333409455543525
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
15
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
76153
|
|
76155
|
NULL
|
0
|
2026-04-24T07:33:23.910839+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777016003910_m1.jpg...
|
PhpStorm
|
faVsco.js – TrackAutomatedReportGeneratedEventTest faVsco.js – TrackAutomatedReportGeneratedEventTest.php...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
15
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TrackAutomatedReportGeneratedEventTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TrackAutomatedReportGeneratedEventTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TrackAutomatedReportGeneratedEventTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Listeners\\AutomatedReports\\UserPilot\\TrackAutomatedReportGeneratedEvent;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse Tests\\TestCase;\n\nclass TrackAutomatedReportGeneratedEventTest extends TestCase\n{\n private UserPilotClient&MockObject $userPilotClient;\n private AutomatedReportsService&MockObject $automatedReportsService;\n\n protected function setUp(): void\n {\n parent::setUp();\n $this->userPilotClient = $this->createMock(UserPilotClient::class);\n $this->automatedReportsService = $this->createMock(AutomatedReportsService::class);\n }\n\n private function makeListener(): TrackAutomatedReportGeneratedEvent\n {\n return new TrackAutomatedReportGeneratedEvent(\n $this->userPilotClient,\n $this->automatedReportsService,\n );\n }\n\n private function makeEvent(AutomatedReport $report): AutomatedReportGenerated\n {\n return new AutomatedReportGenerated($report);\n }\n\n public function testHandleSkipsWhenUserPilotTokenIsNull(): void\n {\n config(['services.userpilot.token' => null]);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->never())->method('isAskJiminnyReport');\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksCreatorForAskJiminnyReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn($creator);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(123);\n\n $this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $creator,\n 'ask-jiminny-report-generated',\n ['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);\n $report->expects($this->once())->method('getCreator')->willReturn(null);\n $report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->expects($this->once())->method('getFrequency')->willReturn('weekly');\n $report->expects($this->once())->method('getId')->willReturn(456);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleTracksAllRecipientsForExecReport(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $userOne = $this->createMock(User::class);\n $userTwo = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(789);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$userOne, $userTwo]);\n\n $this->userPilotClient->expects($this->exactly(2))\n ->method('track')\n ->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {\n $this->assertTrue($user === $userOne || $user === $userTwo);\n $this->assertSame('automated-report-generated', $eventName);\n $this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);\n\n return null;\n });\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('exec_summary');\n $report->expects($this->once())->method('getFrequency')->willReturn('monthly');\n $report->expects($this->once())->method('getId')->willReturn(101);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->willReturn([]);\n\n $this->userPilotClient->expects($this->never())->method('track');\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n\n public function testHandleDoesNotThrowOnGuzzleException(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $creator = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('isAskJiminnyReport')->willReturn(true);\n $report->method('getCreator')->willReturn($creator);\n $report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);\n $report->method('getFrequency')->willReturn('daily');\n $report->method('getId')->willReturn(202);\n\n $guzzleException = $this->createMock(GuzzleException::class);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with($creator, 'ask-jiminny-report-generated', $this->anything())\n ->willThrowException($guzzleException);\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n\n $this->addToAssertionCount(1);\n }\n\n public function testHandleTracksAutomatedReportWithSingleRecipient(): void\n {\n config(['services.userpilot.token' => 'NX-token']);\n\n $user = $this->createMock(User::class);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);\n $report->expects($this->once())->method('getType')->willReturn('team_performance');\n $report->expects($this->once())->method('getFrequency')->willReturn('daily');\n $report->expects($this->once())->method('getId')->willReturn(303);\n\n $this->automatedReportsService->expects($this->once())\n ->method('getRecipientUserObjects')\n ->with($report)\n ->willReturn([$user]);\n\n $this->userPilotClient->expects($this->once())\n ->method('track')\n ->with(\n $user,\n 'automated-report-generated',\n ['report_type' => 'team_performance', 'frequency' => 'daily']\n );\n\n $listener = $this->makeListener();\n $listener->handle($this->makeEvent($report));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"15","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Listeners\\AutomatedReports\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Events\\AutomatedReports\\AutomatedReportGenerated;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\Contracts\\UserContract;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\UserPilot\\UserPilotClient;\nuse Illuminate\\Support\\Facades\\Log;\n\nclass TrackAutomatedReportGeneratedEvent implements ShouldQueue\n{\n use InteractsWithQueue;\n\n private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';\n private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';\n\n public string $queue = Constants::QUEUE_DELAYABLE;\n\n public function __construct(\n private readonly UserPilotClient $userPilotClient,\n private readonly AutomatedReportsService $automatedReportsService,\n ) {\n }\n\n public function handle(AutomatedReportGenerated $event): void\n {\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n $automatedReport = $event->automatedReport;\n $payload = $this->buildPayload($automatedReport);\n\n $eventName = $this->resolveEventName($automatedReport);\n\n $users = $this->resolveUsers($automatedReport);\n\n if (empty($users)) {\n Log::warning('[UserPilot] No recipients found for automated report', [\n 'report_id' => $automatedReport->getId(),\n 'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),\n ]);\n\n return;\n }\n\n Log::info('[UserPilot] Sending automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'event_name' => $eventName,\n 'recipient_count' => count($users),\n ]);\n\n try {\n foreach ($users as $user) {\n $this->userPilotClient->track($user, $eventName, $payload);\n }\n } catch (GuzzleException $e) {\n Log::error('[UserPilot] Failed to send automated report event', [\n 'report_id' => $automatedReport->getId(),\n 'error' => $e->getMessage(),\n ]);\n $this->release(3600);\n }\n }\n\n /**\n * @return array<UserContract>\n */\n private function resolveUsers(AutomatedReport $automatedReport): array\n {\n if ($automatedReport->isAskJiminnyReport()) {\n $creator = $automatedReport->getCreator();\n\n return $creator !== null ? [$creator] : [];\n }\n\n return $this->automatedReportsService->getRecipientUserObjects($automatedReport);\n }\n\n private function buildPayload(AutomatedReport $automatedReport): array\n {\n return [\n 'report_type' => $automatedReport->getType(),\n 'frequency' => $automatedReport->getFrequency(),\n ];\n }\n\n private function resolveEventName(AutomatedReport $automatedReport): string\n {\n if ($automatedReport->isAskJiminnyReport()) {\n return self::EVENT_NAME_ASK_JIMINNY_REPORT;\n }\n\n return self::EVENT_NAME_AUTOMATED_REPORT;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8210130048459164633
|
-814333409455543525
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
TrackAutomatedReportGeneratedEventTest
Run 'TrackAutomatedReportGeneratedEventTest'
Debug 'TrackAutomatedReportGeneratedEventTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Listeners\AutomatedReports\UserPilot\TrackAutomatedReportGeneratedEvent;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use PHPUnit\Framework\MockObject\MockObject;
use Tests\TestCase;
class TrackAutomatedReportGeneratedEventTest extends TestCase
{
private UserPilotClient&MockObject $userPilotClient;
private AutomatedReportsService&MockObject $automatedReportsService;
protected function setUp(): void
{
parent::setUp();
$this->userPilotClient = $this->createMock(UserPilotClient::class);
$this->automatedReportsService = $this->createMock(AutomatedReportsService::class);
}
private function makeListener(): TrackAutomatedReportGeneratedEvent
{
return new TrackAutomatedReportGeneratedEvent(
$this->userPilotClient,
$this->automatedReportsService,
);
}
private function makeEvent(AutomatedReport $report): AutomatedReportGenerated
{
return new AutomatedReportGenerated($report);
}
public function testHandleSkipsWhenUserPilotTokenIsNull(): void
{
config(['services.userpilot.token' => null]);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->never())->method('isAskJiminnyReport');
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksCreatorForAskJiminnyReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn($creator);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(123);
$this->automatedReportsService->expects($this->never())->method('getRecipientUserObjects');
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$creator,
'ask-jiminny-report-generated',
['report_type' => AutomatedReportsService::TYPE_ASK_JIMINNY, 'frequency' => 'weekly']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleSkipsTrackingWhenAskJiminnyCreatorIsNull(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(true);
$report->expects($this->once())->method('getCreator')->willReturn(null);
$report->expects($this->once())->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->expects($this->once())->method('getFrequency')->willReturn('weekly');
$report->expects($this->once())->method('getId')->willReturn(456);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleTracksAllRecipientsForExecReport(): void
{
config(['services.userpilot.token' => 'NX-token']);
$userOne = $this->createMock(User::class);
$userTwo = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(789);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$userOne, $userTwo]);
$this->userPilotClient->expects($this->exactly(2))
->method('track')
->willReturnCallback(function ($user, $eventName, $payload) use ($userOne, $userTwo) {
$this->assertTrue($user === $userOne || $user === $userTwo);
$this->assertSame('automated-report-generated', $eventName);
$this->assertSame(['report_type' => 'exec_summary', 'frequency' => 'monthly'], $payload);
return null;
});
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotTrackWhenExecReportHasNoRecipients(): void
{
config(['services.userpilot.token' => 'NX-token']);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(3))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('exec_summary');
$report->expects($this->once())->method('getFrequency')->willReturn('monthly');
$report->expects($this->once())->method('getId')->willReturn(101);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->willReturn([]);
$this->userPilotClient->expects($this->never())->method('track');
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
public function testHandleDoesNotThrowOnGuzzleException(): void
{
config(['services.userpilot.token' => 'NX-token']);
$creator = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->method('isAskJiminnyReport')->willReturn(true);
$report->method('getCreator')->willReturn($creator);
$report->method('getType')->willReturn(AutomatedReportsService::TYPE_ASK_JIMINNY);
$report->method('getFrequency')->willReturn('daily');
$report->method('getId')->willReturn(202);
$guzzleException = $this->createMock(GuzzleException::class);
$this->userPilotClient->expects($this->once())
->method('track')
->with($creator, 'ask-jiminny-report-generated', $this->anything())
->willThrowException($guzzleException);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
$this->addToAssertionCount(1);
}
public function testHandleTracksAutomatedReportWithSingleRecipient(): void
{
config(['services.userpilot.token' => 'NX-token']);
$user = $this->createMock(User::class);
$report = $this->createMock(AutomatedReport::class);
$report->expects($this->exactly(2))->method('isAskJiminnyReport')->willReturn(false);
$report->expects($this->once())->method('getType')->willReturn('team_performance');
$report->expects($this->once())->method('getFrequency')->willReturn('daily');
$report->expects($this->once())->method('getId')->willReturn(303);
$this->automatedReportsService->expects($this->once())
->method('getRecipientUserObjects')
->with($report)
->willReturn([$user]);
$this->userPilotClient->expects($this->once())
->method('track')
->with(
$user,
'automated-report-generated',
['report_type' => 'team_performance', 'frequency' => 'daily']
);
$listener = $this->makeListener();
$listener->handle($this->makeEvent($report));
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
15
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Listeners\AutomatedReports\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Queue\InteractsWithQueue;
use Jiminny\Component\Queue\Constants;
use Jiminny\Events\AutomatedReports\AutomatedReportGenerated;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\Contracts\UserContract;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\UserPilot\UserPilotClient;
use Illuminate\Support\Facades\Log;
class TrackAutomatedReportGeneratedEvent implements ShouldQueue
{
use InteractsWithQueue;
private const string EVENT_NAME_AUTOMATED_REPORT = 'automated-report-generated';
private const string EVENT_NAME_ASK_JIMINNY_REPORT = 'ask-jiminny-report-generated';
public string $queue = Constants::QUEUE_DELAYABLE;
public function __construct(
private readonly UserPilotClient $userPilotClient,
private readonly AutomatedReportsService $automatedReportsService,
) {
}
public function handle(AutomatedReportGenerated $event): void
{
if (config('services.userpilot.token') === null) {
return;
}
$automatedReport = $event->automatedReport;
$payload = $this->buildPayload($automatedReport);
$eventName = $this->resolveEventName($automatedReport);
$users = $this->resolveUsers($automatedReport);
if (empty($users)) {
Log::warning('[UserPilot] No recipients found for automated report', [
'report_id' => $automatedReport->getId(),
'is_ask_jiminny' => $automatedReport->isAskJiminnyReport(),
]);
return;
}
Log::info('[UserPilot] Sending automated report event', [
'report_id' => $automatedReport->getId(),
'event_name' => $eventName,
'recipient_count' => count($users),
]);
try {
foreach ($users as $user) {
$this->userPilotClient->track($user, $eventName, $payload);
}
} catch (GuzzleException $e) {
Log::error('[UserPilot] Failed to send automated report event', [
'report_id' => $automatedReport->getId(),
'error' => $e->getMessage(),
]);
$this->release(3600);
}
}
/**
* @return array<UserContract>
*/
private function resolveUsers(AutomatedReport $automatedReport): array
{
if ($automatedReport->isAskJiminnyReport()) {
$creator = $automatedReport->getCreator();
return $creator !== null ? [$creator] : [];
}
return $this->automatedReportsService->getRecipientUserObjects($automatedReport);
}
private function buildPayload(AutomatedReport $automatedReport): array
{
return [
'report_type' => $automatedReport->getType(),
'frequency' => $automatedReport->getFrequency(),
];
}
private function resolveEventName(AutomatedReport $automatedReport): string
{
if ($automatedReport->isAskJiminnyReport()) {
return self::EVENT_NAME_ASK_JIMINNY_REPORT;
}
return self::EVENT_NAME_AUTOMATED_REPORT;
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
76089
|
NULL
|
0
|
2026-04-24T07:28:02.791490+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015682791_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox• 0FileEditViewHistory→BookmarksProfilesToo Firefox• 0FileEditViewHistory→BookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com•Daily - Platform - now100% K78 • Fri 24 Apr 9:46:13|=Pop out this videoNikolay NikolovStefka StoyanovaGalya DimitrovaLukas Kovalik9:46 AM | Daily - Platform• 0:27...
|
NULL
|
3168285612613231679
|
NULL
|
click
|
ocr
|
NULL
|
Firefox• 0FileEditViewHistory→BookmarksProfilesToo Firefox• 0FileEditViewHistory→BookmarksProfilesToolsWindowHelpmeet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com•Daily - Platform - now100% K78 • Fri 24 Apr 9:46:13|=Pop out this videoNikolay NikolovStefka StoyanovaGalya DimitrovaLukas Kovalik9:46 AM | Daily - Platform• 0:27...
|
76044
|
|
76088
|
NULL
|
0
|
2026-04-24T07:28:02.735124+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015682735_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityMorerireroxToolsHelpcalMistorbookmarksJ DMSActivityMorerireroxToolsHelpcalMistorbookmarksJiminny …..vXStarredi• jiminny-x-integrati..8 platform-inner-teamE) Channels# ai-chapter# ai-team# alerts# backend# c-learning-peoplei confusion-clinic# curiosity_labadeal-insichts-dev# engineering# frontend# general# infra-changes# jiminny-bg8 people-with-copilo...8 people-with-zoom-# platform-team# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the Deople of iimi...ProtllesWindow& platform-inner-...& 10MessagesChannel OverviewMoreYesterdayjinnylaop Aor 22nd Added by GitHubNikolay Ivanov 3:24 PMнякой нещо да е настроивал по githubactions. Почна да прави къмити вместо менбез да съм му разрешевал?https:/github.com/lminnv/app/pull/1200//changes/a68f42f210859f838a4fdced451f750627besoioИли нещо аз не разбирам?0AA0e 20 replies Last reply 18...Nikolay Yankov 3:50PMreplied to a uhread: някои нешо ла е насто..лол. ами предлагам маи ла му заораним лапускам към всички ла вилятNikolav Yankov 9.38 AMЩе се забавя за дейлито. Започнете без Мен.Aneliva Angelova 9:43 AMIДобро утро, няма да успея да вляза влейлито. Пествам ньлжовете.Message & platform-inner-team+ Aa I..•) New TabAl reports promotion pages by nik• JY-9712 | Nuges to expire after on8 Jiminnyu Userpilot Logged-activityJY-20157 add not enough activ XPipelines - jiminny/app+ New Tab©github.com/jimjiminny / app 8<> Code87 Pull requests 31( Agents |© Actions•• Wiki © Security and quality 32 ~ Insights 3 Settings@ On April 24 we'll start using GitHub Copilot interaction data for Al model training unless you opt out. Review this update and manage your preferences in your GitHub account settings.JY-20157 add not enough activities notification #12011 •$1 Open LakyLak wants to merge 2 commits into master from JY-20157-AJ-report-not-send-notification@) Conversation o• Commits 2|- Checks 21E Files changed 13A © All commits +Q Filter files...apo/Console/Commands/Reports/AutomatedReportsCommand.ohp@ -61,21 +61,29 @ public function handle(): intv = Console/Commands/Renorts|Snow = Carbon: : now();E AutomatedReportsCommand...v Jobs/AutomatedReportsE RequestGenerateAskJiminnyR...SendReportNotGeneratedMail...v @ Listeners/AutomatedReports/U….E TrackAutomatedReportGener...v # Mail/ReportsS1sMondav = Snow->1SMonday)S1sr1rstDayUtMonth = Snow->day === 1;ScurrentMonth = Snow->month.// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [+ ReportNotGenerated.ohp |"1SMonday' => S1SMonday,~ E Services/Kiosk/AutomatedRepo…..AskJiminnyReportActivityServ…'isFirstDay0fMonth' => SisFirstDay0fMonth,'currentMonth' => ScurrentMonth.E AutomatedReportsService.php'isQuarterlyMonth' => SisQuarterlyMonth,~E resources/views/emails/reportsreport-not-generated.blade.php/I Process dailv revortsl• F tests/UnitSthis->processReports(AutomatedReportsService::FREQUENCYDAILY):~ Jobs/AutomatedReportsE ReguestGenerateAsk JiminnvR....v = listeners/AutomatedRenorts/U.₴ TrackAutomatedReportGener..v E Services/Kiosk/AutomatedRepo…..E AskJiminnyReportActivityServ....AutomatedReportsServiceActi…./ Process weekly renorts on Mondavcif (SisMondav) {64 +67 +74 +86 +@40@ Daily - Platform - nowQ Type to search100% C4 8• Fri 24 Apr 9:46:13• Checks pending Code • (Preview) -+384 -52 9000C 0 I 13 viewedSubmit review+10 -2 mane [ Viewed0 ...Snow = Carhon:.nowdSisMondav = Snow->1SMonday)"Sisweekend = $now->isWeekend():SisFirstDay0fMonth = Snow->day === 1;ScurrentMonth = Snow->month.SisManualTrigger = $this->option('report-id') !== null;// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);Sthis->loager->info(self::L0G PREFIX . ' Checkina conditions'. [I"isMonday' => SisMonday,'isweekend' => $isWeekend,'isFirstDay0fMonth' => $isFirstDay0fMonth,'currentMonth' => ScurrentMonth.l'isQuarterlyMonth' => SisQuarterlyMonth,/ Process dailv renorts on weekdavs onlv (skio Saturdav/Sundav)...// Manual triggers via --report-id bypass the weekend skip.if (I Sisweekend || SisManualTriager) {Sthis->processReports(AutomatedReportsService::FREQUENCY_DAILY):} else {ISthis->logger->info(self::L0G PREFIX . ' Skipping daily reports on weekend'):/ Process weekly renorts on Mondavslif (SisMonday) {...
|
NULL
|
-8496811010192975640
|
NULL
|
click
|
ocr
|
NULL
|
DMSActivityMorerireroxToolsHelpcalMistorbookmarksJ DMSActivityMorerireroxToolsHelpcalMistorbookmarksJiminny …..vXStarredi• jiminny-x-integrati..8 platform-inner-teamE) Channels# ai-chapter# ai-team# alerts# backend# c-learning-peoplei confusion-clinic# curiosity_labadeal-insichts-dev# engineering# frontend# general# infra-changes# jiminny-bg8 people-with-copilo...8 people-with-zoom-# platform-team# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the Deople of iimi...ProtllesWindow& platform-inner-...& 10MessagesChannel OverviewMoreYesterdayjinnylaop Aor 22nd Added by GitHubNikolay Ivanov 3:24 PMнякой нещо да е настроивал по githubactions. Почна да прави къмити вместо менбез да съм му разрешевал?https:/github.com/lminnv/app/pull/1200//changes/a68f42f210859f838a4fdced451f750627besoioИли нещо аз не разбирам?0AA0e 20 replies Last reply 18...Nikolay Yankov 3:50PMreplied to a uhread: някои нешо ла е насто..лол. ами предлагам маи ла му заораним лапускам към всички ла вилятNikolav Yankov 9.38 AMЩе се забавя за дейлито. Започнете без Мен.Aneliva Angelova 9:43 AMIДобро утро, няма да успея да вляза влейлито. Пествам ньлжовете.Message & platform-inner-team+ Aa I..•) New TabAl reports promotion pages by nik• JY-9712 | Nuges to expire after on8 Jiminnyu Userpilot Logged-activityJY-20157 add not enough activ XPipelines - jiminny/app+ New Tab©github.com/jimjiminny / app 8<> Code87 Pull requests 31( Agents |© Actions•• Wiki © Security and quality 32 ~ Insights 3 Settings@ On April 24 we'll start using GitHub Copilot interaction data for Al model training unless you opt out. Review this update and manage your preferences in your GitHub account settings.JY-20157 add not enough activities notification #12011 •$1 Open LakyLak wants to merge 2 commits into master from JY-20157-AJ-report-not-send-notification@) Conversation o• Commits 2|- Checks 21E Files changed 13A © All commits +Q Filter files...apo/Console/Commands/Reports/AutomatedReportsCommand.ohp@ -61,21 +61,29 @ public function handle(): intv = Console/Commands/Renorts|Snow = Carbon: : now();E AutomatedReportsCommand...v Jobs/AutomatedReportsE RequestGenerateAskJiminnyR...SendReportNotGeneratedMail...v @ Listeners/AutomatedReports/U….E TrackAutomatedReportGener...v # Mail/ReportsS1sMondav = Snow->1SMonday)S1sr1rstDayUtMonth = Snow->day === 1;ScurrentMonth = Snow->month.// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);$this->logger->info(self::LOG_PREFIX . ' Checking conditions', [+ ReportNotGenerated.ohp |"1SMonday' => S1SMonday,~ E Services/Kiosk/AutomatedRepo…..AskJiminnyReportActivityServ…'isFirstDay0fMonth' => SisFirstDay0fMonth,'currentMonth' => ScurrentMonth.E AutomatedReportsService.php'isQuarterlyMonth' => SisQuarterlyMonth,~E resources/views/emails/reportsreport-not-generated.blade.php/I Process dailv revortsl• F tests/UnitSthis->processReports(AutomatedReportsService::FREQUENCYDAILY):~ Jobs/AutomatedReportsE ReguestGenerateAsk JiminnvR....v = listeners/AutomatedRenorts/U.₴ TrackAutomatedReportGener..v E Services/Kiosk/AutomatedRepo…..E AskJiminnyReportActivityServ....AutomatedReportsServiceActi…./ Process weekly renorts on Mondavcif (SisMondav) {64 +67 +74 +86 +@40@ Daily - Platform - nowQ Type to search100% C4 8• Fri 24 Apr 9:46:13• Checks pending Code • (Preview) -+384 -52 9000C 0 I 13 viewedSubmit review+10 -2 mane [ Viewed0 ...Snow = Carhon:.nowdSisMondav = Snow->1SMonday)"Sisweekend = $now->isWeekend():SisFirstDay0fMonth = Snow->day === 1;ScurrentMonth = Snow->month.SisManualTrigger = $this->option('report-id') !== null;// Check if the current month is a quarterly month (January, April, July, October)$isQuarterlyMonth = in_array($currentMonth, [1, 4, 7, 10], true);Sthis->loager->info(self::L0G PREFIX . ' Checkina conditions'. [I"isMonday' => SisMonday,'isweekend' => $isWeekend,'isFirstDay0fMonth' => $isFirstDay0fMonth,'currentMonth' => ScurrentMonth.l'isQuarterlyMonth' => SisQuarterlyMonth,/ Process dailv renorts on weekdavs onlv (skio Saturdav/Sundav)...// Manual triggers via --report-id bypass the weekend skip.if (I Sisweekend || SisManualTriager) {Sthis->processReports(AutomatedReportsService::FREQUENCY_DAILY):} else {ISthis->logger->info(self::L0G PREFIX . ' Skipping daily reports on weekend'):/ Process weekly renorts on Mondavslif (SisMonday) {...
|
76042
|
|
76029
|
NULL
|
0
|
2026-04-24T07:22:54.523443+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015374523_m2.jpg...
|
Firefox
|
(132) YouTube — Personal
|
True
|
www.youtube.com/watch?v=gK-oV8g3Y1A&list=RDgK- www.youtube.com/watch?v=gK-oV8g3Y1A&list=RDgK-oV8g3Y1A&start_radio=1...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(66) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) YouTube
(132) YouTube
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Sprievodca
Domovská stránka YouTube
BG
Preskočiť navigáciu
Preskočiť navigáciu
domoracki
domoracki
Vymazať vyhľadávací dopyt
Search
Vyhľadávať hlasom
Vytvoriť
Vytvoriť
Upozornenia
9+
Ponuka účtu
Domov
Domov
Domov
Shorts
Shorts
Shorts
Odbery
Odbery
Odbery
Unspeakable. K dispozícii je nový obsah.
Unspeakable
Unspeakable
EU Made Simple. K dispozícii je nový obsah.
EU Made Simple
EU Made Simple
Sam Harris. K dispozícii je nový obsah.
Sam Harris
Sam Harris
T90Official - Age Of Empires 2. K dispozícii je nový obsah.
T90Official - Age Of Empires 2
T90Official - Age Of Empires 2
TLDR News EU. K dispozícii je nový obsah.
TLDR News EU
TLDR News EU
Papa Ruzz. K dispozícii je nový obsah.
Papa Ruzz
Papa Ruzz
TE1 GAMING
TE1 GAMING
TE1 GAMING
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Moje
Moje
Moje
Váš kanál
Váš kanál
Váš kanál
História
História
História
Zoznamy
Zoznamy
Zoznamy
Pozrieť neskôr
Pozrieť neskôr
Pozrieť neskôr
Obľúbené videá
Obľúbené videá
Obľúbené videá
Vaše videá
Vaše videá
Vaše videá
Stiahnuté súbory
Stiahnuté súbory
Stiahnuté súbory
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Preskúmať
Preskúmať
Hudba
Hudba
Hudba
Hry
Hry
Hry
Šport
Šport
Šport
Viac zo služby YouTube
Viac zo služby YouTube
YouTube Premium
YouTube Premium
YouTube Premium
YouTube Music
YouTube Music
YouTube Music
YouTube Kids
YouTube Kids
YouTube Kids
História nahlasovania
História nahlasovania
História nahlasovania
Informácie
Informácie
Tlač
Tlač
Autorské práva
Autorské práva
Kontaktujte nás
Kontaktujte nás
Autori
Autori
Inzercia
Inzercia
Vývojári
Vývojári
Zmluvné podmienky
Zmluvné podmienky
Ochrana súkromia
Ochrana súkromia
Pravidlá a bezpečnosť
Pravidlá a bezpečnosť
Ako funguje YouTube
Ako funguje YouTube
Testovať nové funkcie
Testovať nové funkcie
© 2026 Google LLC
Všetko
Všetko
Podcasty
Podcasty
Hudba
Hudba
Hry
Hry
Mixy
Mixy
Správy
Správy
Naživo
Naživo
Príroda
Príroda
Futbal
Futbal
Nedávno nahrané
Nedávno nahrané
Pozreté
Pozreté
Novinky pre vás
Novinky pre vás
MG Motor Bulgaria
Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране
Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране
Sponzorované
·
MG Motor Bulgaria
Moje centrum reklám
Pozerať
Pozerať
Získať kalkuláciu
Získať kalkuláciu
Prejsť na kanál The Duran...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.26961437,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(66) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.30618352,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.20844415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.2443484,"top":0.23703113,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"rescue time detailed overview - Google Search","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.08128324,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.23105054,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.2443484,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.23105054,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.2443484,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.23105054,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.2443484,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"(132) YouTube","depth":4,"bounds":{"left":0.23105054,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"(132) YouTube","depth":5,"bounds":{"left":0.2443484,"top":0.49880287,"width":0.024767287,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3324468,"top":0.49481246,"width":0.007978723,"height":0.01915403},"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.23387633,"top":0.5219473,"width":0.108211435,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sprievodca","depth":13,"bounds":{"left":0.35272607,"top":0.06464485,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domovská stránka YouTube","depth":12,"bounds":{"left":0.36336437,"top":0.0518755,"width":0.04089096,"height":0.044692736},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BG","depth":13,"bounds":{"left":0.40093085,"top":0.061452515,"width":0.0043218085,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Preskočiť navigáciu","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Preskočiť navigáciu","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"domoracki","depth":15,"bounds":{"left":0.57230717,"top":0.06464485,"width":0.15292554,"height":0.01915403},"value":"domoracki","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"domoracki","depth":16,"bounds":{"left":0.57230717,"top":0.066640064,"width":0.025099734,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Vymazať vyhľadávací dopyt","depth":14,"bounds":{"left":0.732879,"top":0.058260176,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":13,"bounds":{"left":0.74484706,"top":0.058260176,"width":0.021276595,"height":0.031923383},"help_text":"Hľadať","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Vyhľadávať hlasom","depth":14,"bounds":{"left":0.77144283,"top":0.058260176,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Vytvoriť","depth":14,"bounds":{"left":0.92137635,"top":0.059856344,"width":0.03474069,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vytvoriť","depth":17,"bounds":{"left":0.9346742,"top":0.06783719,"width":0.016123671,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Upozornenia","depth":15,"bounds":{"left":0.9587766,"top":0.058260176,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9+","depth":17,"bounds":{"left":0.9674202,"top":0.06384677,"width":0.004488032,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Ponuka účtu","depth":14,"bounds":{"left":0.97473407,"top":0.060654428,"width":0.019946808,"height":0.027134877},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domov","depth":18,"bounds":{"left":0.3487367,"top":0.10614525,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domov","depth":19,"bounds":{"left":0.3487367,"top":0.10614525,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domov","depth":21,"bounds":{"left":0.36868352,"top":0.11572227,"width":0.01462766,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Shorts","depth":18,"bounds":{"left":0.3487367,"top":0.13806863,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Shorts","depth":19,"bounds":{"left":0.3487367,"top":0.13806863,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shorts","depth":21,"bounds":{"left":0.36868352,"top":0.14764565,"width":0.013630319,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Odbery","depth":20,"bounds":{"left":0.3487367,"top":0.18994413,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Odbery","depth":21,"bounds":{"left":0.3487367,"top":0.18994413,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Odbery","depth":23,"bounds":{"left":0.35272607,"top":0.19832402,"width":0.016954787,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Unspeakable. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.22186752,"width":0.06781915,"height":0.031923383},"help_text":"Unspeakable","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Unspeakable","depth":19,"bounds":{"left":0.3487367,"top":0.22186752,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unspeakable","depth":21,"bounds":{"left":0.36868352,"top":0.23144454,"width":0.026761968,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"EU Made Simple. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.25379092,"width":0.06781915,"height":0.031923383},"help_text":"EU Made Simple","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"EU Made Simple","depth":19,"bounds":{"left":0.3487367,"top":0.25379092,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"EU Made Simple","depth":21,"bounds":{"left":0.36868352,"top":0.26336792,"width":0.033909574,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sam Harris. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.2857143,"width":0.06781915,"height":0.031923383},"help_text":"Sam Harris","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Sam Harris","depth":19,"bounds":{"left":0.3487367,"top":0.2857143,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sam Harris","depth":21,"bounds":{"left":0.36868352,"top":0.2952913,"width":0.023105053,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"T90Official - Age Of Empires 2. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.31763768,"width":0.06781915,"height":0.031923383},"help_text":"T90Official - Age Of Empires 2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"T90Official - Age Of Empires 2","depth":19,"bounds":{"left":0.3487367,"top":0.31763768,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"T90Official - Age Of Empires 2","depth":21,"bounds":{"left":0.36868352,"top":0.3272147,"width":0.061835106,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"TLDR News EU. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.34956107,"width":0.06781915,"height":0.031923383},"help_text":"TLDR News EU","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"TLDR News EU","depth":19,"bounds":{"left":0.3487367,"top":0.34956107,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TLDR News EU","depth":21,"bounds":{"left":0.36868352,"top":0.35913807,"width":0.030917553,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Papa Ruzz. K dispozícii je nový obsah.","depth":18,"bounds":{"left":0.3487367,"top":0.38148445,"width":0.06781915,"height":0.031923383},"help_text":"Papa Ruzz","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Papa Ruzz","depth":19,"bounds":{"left":0.3487367,"top":0.38148445,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Papa Ruzz","depth":21,"bounds":{"left":0.36868352,"top":0.39106146,"width":0.021775266,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"TE1 GAMING","depth":18,"bounds":{"left":0.3487367,"top":0.41340783,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"TE1 GAMING","depth":19,"bounds":{"left":0.3487367,"top":0.41340783,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TE1 GAMING","depth":21,"bounds":{"left":0.36868352,"top":0.42298484,"width":0.027260639,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zobraziť viac","depth":18,"bounds":{"left":0.3487367,"top":0.44533122,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":19,"bounds":{"left":0.3487367,"top":0.44533122,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":20,"bounds":{"left":0.3487367,"top":0.44533122,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zobraziť viac","depth":22,"bounds":{"left":0.36868352,"top":0.45490822,"width":0.026595745,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Moje","depth":20,"bounds":{"left":0.3487367,"top":0.49720672,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Moje","depth":21,"bounds":{"left":0.3487367,"top":0.49720672,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Moje","depth":23,"bounds":{"left":0.35272607,"top":0.50558656,"width":0.011801862,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Váš kanál","depth":20,"bounds":{"left":0.3487367,"top":0.5291301,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Váš kanál","depth":21,"bounds":{"left":0.3487367,"top":0.5291301,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Váš kanál","depth":23,"bounds":{"left":0.36868352,"top":0.5387071,"width":0.020113032,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"História","depth":20,"bounds":{"left":0.3487367,"top":0.56105345,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"História","depth":21,"bounds":{"left":0.3487367,"top":0.56105345,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"História","depth":23,"bounds":{"left":0.36868352,"top":0.5706305,"width":0.016289894,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Zoznamy","depth":20,"bounds":{"left":0.3487367,"top":0.59297687,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zoznamy","depth":21,"bounds":{"left":0.3487367,"top":0.59297687,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoznamy","depth":23,"bounds":{"left":0.36868352,"top":0.60255384,"width":0.019115692,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pozrieť neskôr","depth":20,"bounds":{"left":0.3487367,"top":0.6249002,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pozrieť neskôr","depth":21,"bounds":{"left":0.3487367,"top":0.6249002,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pozrieť neskôr","depth":23,"bounds":{"left":0.36868352,"top":0.63447726,"width":0.029753989,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Obľúbené videá","depth":20,"bounds":{"left":0.3487367,"top":0.65682364,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Obľúbené videá","depth":21,"bounds":{"left":0.3487367,"top":0.65682364,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Obľúbené videá","depth":23,"bounds":{"left":0.36868352,"top":0.6664006,"width":0.032081116,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vaše videá","depth":20,"bounds":{"left":0.3487367,"top":0.688747,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vaše videá","depth":21,"bounds":{"left":0.3487367,"top":0.688747,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vaše videá","depth":23,"bounds":{"left":0.36868352,"top":0.698324,"width":0.02244016,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Stiahnuté súbory","depth":21,"bounds":{"left":0.3487367,"top":0.7206704,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Stiahnuté súbory","depth":22,"bounds":{"left":0.3487367,"top":0.7206704,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Stiahnuté súbory","depth":24,"bounds":{"left":0.36868352,"top":0.7302474,"width":0.034906916,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zobraziť viac","depth":20,"bounds":{"left":0.3487367,"top":0.75259376,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":21,"bounds":{"left":0.3487367,"top":0.75259376,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":22,"bounds":{"left":0.3487367,"top":0.75259376,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zobraziť viac","depth":24,"bounds":{"left":0.36868352,"top":0.7621708,"width":0.026595745,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Preskúmať","depth":16,"bounds":{"left":0.3487367,"top":0.8044693,"width":0.07180851,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Preskúmať","depth":18,"bounds":{"left":0.35272607,"top":0.8104549,"width":0.025930852,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hudba","depth":18,"bounds":{"left":0.3487367,"top":0.830008,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Hudba","depth":19,"bounds":{"left":0.3487367,"top":0.830008,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hudba","depth":21,"bounds":{"left":0.36868352,"top":0.839585,"width":0.013630319,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hry","depth":18,"bounds":{"left":0.3487367,"top":0.8619314,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Hry","depth":19,"bounds":{"left":0.3487367,"top":0.8619314,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hry","depth":21,"bounds":{"left":0.36868352,"top":0.87150836,"width":0.0071476065,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Šport","depth":18,"bounds":{"left":0.3487367,"top":0.89385474,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Šport","depth":19,"bounds":{"left":0.3487367,"top":0.89385474,"width":0.06781915,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Šport","depth":21,"bounds":{"left":0.36868352,"top":0.9034318,"width":0.011303191,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Viac zo služby YouTube","depth":16,"bounds":{"left":0.3487367,"top":0.94573027,"width":0.07180851,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Viac zo služby YouTube","depth":18,"bounds":{"left":0.35272607,"top":0.9517159,"width":0.05618351,"height":0.015163607},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Premium","depth":18,"bounds":{"left":0.3487367,"top":0.97126895,"width":0.06781915,"height":0.028731048},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Premium","depth":19,"bounds":{"left":0.3487367,"top":0.97126895,"width":0.06781915,"height":0.028731048},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Premium","depth":21,"bounds":{"left":0.36868352,"top":0.980846,"width":0.038065158,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Music","depth":18,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.0031923056},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Music","depth":19,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.0031923056},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Music","depth":21,"bounds":{"left":0.36868352,"top":1.0,"width":0.03174867,"height":-0.0127693415},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Kids","depth":18,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.03511572},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Kids","depth":19,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.03511572},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Kids","depth":21,"bounds":{"left":0.36868352,"top":1.0,"width":0.02825798,"height":-0.044692755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"História nahlasovania","depth":18,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.08699119},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"História nahlasovania","depth":19,"bounds":{"left":0.3487367,"top":1.0,"width":0.06781915,"height":-0.08699119},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"História nahlasovania","depth":21,"bounds":{"left":0.36868352,"top":1.0,"width":0.044714097,"height":-0.09656823},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Informácie","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Informácie","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Tlač","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tlač","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Autorské práva","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Autorské práva","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kontaktujte nás","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kontaktujte nás","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Autori","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Autori","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Inzercia","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inzercia","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vývojári","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vývojári","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Zmluvné podmienky","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zmluvné podmienky","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ochrana súkromia","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ochrana súkromia","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pravidlá a bezpečnosť","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pravidlá a bezpečnosť","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Ako funguje YouTube","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ako funguje YouTube","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Testovať nové funkcie","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Testovať nové funkcie","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"© 2026 Google LLC","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Všetko","depth":17,"bounds":{"left":0.4325133,"top":0.10614525,"width":0.02244016,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Všetko","depth":19,"bounds":{"left":0.43650267,"top":0.112529926,"width":0.014461436,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Podcasty","depth":17,"bounds":{"left":0.45894283,"top":0.10614525,"width":0.027426861,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Podcasty","depth":19,"bounds":{"left":0.46293217,"top":0.112529926,"width":0.019448139,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hudba","depth":17,"bounds":{"left":0.49035904,"top":0.10614525,"width":0.021609042,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hudba","depth":19,"bounds":{"left":0.4943484,"top":0.112529926,"width":0.013630319,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hry","depth":17,"bounds":{"left":0.5159575,"top":0.10614525,"width":0.015292553,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hry","depth":19,"bounds":{"left":0.5199468,"top":0.112529926,"width":0.00731383,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Mixy","depth":17,"bounds":{"left":0.53523934,"top":0.10614525,"width":0.017785905,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Mixy","depth":19,"bounds":{"left":0.53922874,"top":0.112529926,"width":0.009807181,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Správy","depth":17,"bounds":{"left":0.55701464,"top":0.10614525,"width":0.022107713,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Správy","depth":19,"bounds":{"left":0.561004,"top":0.112529926,"width":0.01412899,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Naživo","depth":17,"bounds":{"left":0.5831117,"top":0.10614525,"width":0.022107713,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Naživo","depth":19,"bounds":{"left":0.58710104,"top":0.112529926,"width":0.01412899,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Príroda","depth":17,"bounds":{"left":0.60920876,"top":0.10614525,"width":0.023271276,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Príroda","depth":19,"bounds":{"left":0.61319816,"top":0.112529926,"width":0.015292553,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Futbal","depth":17,"bounds":{"left":0.6364694,"top":0.10614525,"width":0.020944148,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Futbal","depth":19,"bounds":{"left":0.64045876,"top":0.112529926,"width":0.012965426,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Nedávno nahrané","depth":17,"bounds":{"left":0.66140294,"top":0.10614525,"width":0.04438165,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nedávno nahrané","depth":19,"bounds":{"left":0.6653923,"top":0.112529926,"width":0.036402926,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pozreté","depth":17,"bounds":{"left":0.70977396,"top":0.10614525,"width":0.023936171,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pozreté","depth":19,"bounds":{"left":0.7137633,"top":0.112529926,"width":0.015957447,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Novinky pre vás","depth":17,"bounds":{"left":0.73769945,"top":0.10614525,"width":0.04089096,"height":0.025538707},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Novinky pre vás","depth":19,"bounds":{"left":0.74168885,"top":0.112529926,"width":0.032912236,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"MG Motor Bulgaria","depth":19,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sponzorované","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MG Motor Bulgaria","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Moje centrum reklám","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pozerať","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pozerať","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Získať kalkuláciu","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Získať kalkuláciu","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Prejsť na kanál The Duran","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4491361290492592631
|
-3988354161023384887
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(66) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) YouTube
(132) YouTube
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Sprievodca
Domovská stránka YouTube
BG
Preskočiť navigáciu
Preskočiť navigáciu
domoracki
domoracki
Vymazať vyhľadávací dopyt
Search
Vyhľadávať hlasom
Vytvoriť
Vytvoriť
Upozornenia
9+
Ponuka účtu
Domov
Domov
Domov
Shorts
Shorts
Shorts
Odbery
Odbery
Odbery
Unspeakable. K dispozícii je nový obsah.
Unspeakable
Unspeakable
EU Made Simple. K dispozícii je nový obsah.
EU Made Simple
EU Made Simple
Sam Harris. K dispozícii je nový obsah.
Sam Harris
Sam Harris
T90Official - Age Of Empires 2. K dispozícii je nový obsah.
T90Official - Age Of Empires 2
T90Official - Age Of Empires 2
TLDR News EU. K dispozícii je nový obsah.
TLDR News EU
TLDR News EU
Papa Ruzz. K dispozícii je nový obsah.
Papa Ruzz
Papa Ruzz
TE1 GAMING
TE1 GAMING
TE1 GAMING
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Moje
Moje
Moje
Váš kanál
Váš kanál
Váš kanál
História
História
História
Zoznamy
Zoznamy
Zoznamy
Pozrieť neskôr
Pozrieť neskôr
Pozrieť neskôr
Obľúbené videá
Obľúbené videá
Obľúbené videá
Vaše videá
Vaše videá
Vaše videá
Stiahnuté súbory
Stiahnuté súbory
Stiahnuté súbory
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Preskúmať
Preskúmať
Hudba
Hudba
Hudba
Hry
Hry
Hry
Šport
Šport
Šport
Viac zo služby YouTube
Viac zo služby YouTube
YouTube Premium
YouTube Premium
YouTube Premium
YouTube Music
YouTube Music
YouTube Music
YouTube Kids
YouTube Kids
YouTube Kids
História nahlasovania
História nahlasovania
História nahlasovania
Informácie
Informácie
Tlač
Tlač
Autorské práva
Autorské práva
Kontaktujte nás
Kontaktujte nás
Autori
Autori
Inzercia
Inzercia
Vývojári
Vývojári
Zmluvné podmienky
Zmluvné podmienky
Ochrana súkromia
Ochrana súkromia
Pravidlá a bezpečnosť
Pravidlá a bezpečnosť
Ako funguje YouTube
Ako funguje YouTube
Testovať nové funkcie
Testovať nové funkcie
© 2026 Google LLC
Všetko
Všetko
Podcasty
Podcasty
Hudba
Hudba
Hry
Hry
Mixy
Mixy
Správy
Správy
Naživo
Naživo
Príroda
Príroda
Futbal
Futbal
Nedávno nahrané
Nedávno nahrané
Pozreté
Pozreté
Novinky pre vás
Novinky pre vás
MG Motor Bulgaria
Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране
Вземете MG ZS само за 117 € / 228 лв на месец. Заявете пробно шофиране
Sponzorované
·
MG Motor Bulgaria
Moje centrum reklám
Pozerať
Pozerať
Získať kalkuláciu
Získať kalkuláciu
Prejsť na kanál The Duran...
|
76027
|
|
76028
|
NULL
|
0
|
2026-04-24T07:22:54.456705+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015374456_m1.jpg...
|
Firefox
|
(132) YouTube — Personal
|
True
|
www.youtube.com/watch?v=gK-oV8g3Y1A&list=RDgK- www.youtube.com/watch?v=gK-oV8g3Y1A&list=RDgK-oV8g3Y1A&start_radio=1...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(66) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) YouTube
(132) YouTube
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Sprievodca
Domovská stránka YouTube
BG
Preskočiť navigáciu
Preskočiť navigáciu
domoracki
domoracki
Vymazať vyhľadávací dopyt
Search
Vyhľadávať hlasom
Vytvoriť
Vytvoriť
Upozornenia
9+
Ponuka účtu
Domov
Domov
Domov
Shorts
Shorts
Shorts
Odbery
Odbery
Odbery
Unspeakable. K dispozícii je nový obsah.
Unspeakable
Unspeakable
EU Made Simple. K dispozícii je nový obsah.
EU Made Simple
EU Made Simple
Sam Harris. K dispozícii je nový obsah.
Sam Harris
Sam Harris
T90Official - Age Of Empires 2. K dispozícii je nový obsah.
T90Official - Age Of Empires 2
T90Official - Age Of Empires 2
TLDR News EU. K dispozícii je nový obsah.
TLDR News EU
TLDR News EU
Papa Ruzz. K dispozícii je nový obsah.
Papa Ruzz
Papa Ruzz
TE1 GAMING
TE1 GAMING
TE1 GAMING
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Moje
Moje
Moje
Váš kanál
Váš kanál
Váš kanál
História
História
História
Zoznamy
Zoznamy
Zoznamy
Pozrieť neskôr
Pozrieť neskôr
Pozrieť neskôr
Obľúbené videá
Obľúbené videá
Obľúbené videá
Vaše videá
Vaše videá
Vaše videá
Stiahnuté súbory
Stiahnuté súbory
Stiahnuté súbory
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Preskúmať
Preskúmať
Hudba
Hudba
Hudba
Hry
Hry
Hry
Šport
Šport
Šport
Viac zo služby YouTube
Viac zo služby YouTube
YouTube Premium
YouTube Premium
YouTube Premium
YouTube Music
YouTube Music
YouTube Music
YouTube Kids
YouTube Kids
YouTube Kids
História nahlasovania
História nahlasovania
História nahlasovania
Informácie
Informácie
Tlač
Tlač
Autorské práva
Autorské práva
Kontaktujte nás
Kontaktujte nás
Autori
Autori...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(66) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - kovaliklukas@gmail.com - Gmail","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"rescue time detailed overview - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"rescue time detailed overview - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"(132) YouTube","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"(132) YouTube","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sprievodca","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domovská stránka YouTube","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BG","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Preskočiť navigáciu","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Preskočiť navigáciu","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"domoracki","depth":15,"value":"domoracki","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"domoracki","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Vymazať vyhľadávací dopyt","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":13,"help_text":"Hľadať","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Vyhľadávať hlasom","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Vytvoriť","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vytvoriť","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Upozornenia","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9+","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Ponuka účtu","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domov","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Domov","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Domov","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Shorts","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Shorts","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shorts","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Odbery","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Odbery","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Odbery","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Unspeakable. K dispozícii je nový obsah.","depth":18,"help_text":"Unspeakable","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Unspeakable","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Unspeakable","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"EU Made Simple. K dispozícii je nový obsah.","depth":18,"help_text":"EU Made Simple","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"EU Made Simple","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"EU Made Simple","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sam Harris. K dispozícii je nový obsah.","depth":18,"help_text":"Sam Harris","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Sam Harris","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sam Harris","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"T90Official - Age Of Empires 2. K dispozícii je nový obsah.","depth":18,"help_text":"T90Official - Age Of Empires 2","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"T90Official - Age Of Empires 2","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"T90Official - Age Of Empires 2","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"TLDR News EU. K dispozícii je nový obsah.","depth":18,"help_text":"TLDR News EU","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"TLDR News EU","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TLDR News EU","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Papa Ruzz. K dispozícii je nový obsah.","depth":18,"help_text":"Papa Ruzz","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Papa Ruzz","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Papa Ruzz","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"TE1 GAMING","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"TE1 GAMING","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TE1 GAMING","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zobraziť viac","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zobraziť viac","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Moje","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Moje","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Moje","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Váš kanál","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Váš kanál","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Váš kanál","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"História","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"História","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"História","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Zoznamy","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zoznamy","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zoznamy","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pozrieť neskôr","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pozrieť neskôr","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pozrieť neskôr","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Obľúbené videá","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Obľúbené videá","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Obľúbené videá","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vaše videá","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vaše videá","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vaše videá","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Stiahnuté súbory","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Stiahnuté súbory","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Stiahnuté súbory","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zobraziť viac","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Zobraziť viac","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Zobraziť viac","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Preskúmať","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Preskúmať","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hudba","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Hudba","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hudba","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hry","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Hry","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hry","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Šport","depth":18,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Šport","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Šport","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Viac zo služby YouTube","depth":16,"bounds":{"left":0.16388889,"top":0.0,"width":0.15,"height":0.035555556},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Viac zo služby YouTube","depth":18,"bounds":{"left":0.17222223,"top":0.0,"width":0.11736111,"height":0.02111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Premium","depth":18,"bounds":{"left":0.16388889,"top":0.0,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Premium","depth":19,"bounds":{"left":0.16388889,"top":0.0,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Premium","depth":21,"bounds":{"left":0.20555556,"top":0.0,"width":0.07951389,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Music","depth":18,"bounds":{"left":0.16388889,"top":0.0044444446,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Music","depth":19,"bounds":{"left":0.16388889,"top":0.0044444446,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Music","depth":21,"bounds":{"left":0.20555556,"top":0.017777778,"width":0.06631944,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"YouTube Kids","depth":18,"bounds":{"left":0.16388889,"top":0.04888889,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"YouTube Kids","depth":19,"bounds":{"left":0.16388889,"top":0.04888889,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"YouTube Kids","depth":21,"bounds":{"left":0.20555556,"top":0.062222224,"width":0.059027776,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"História nahlasovania","depth":18,"bounds":{"left":0.16388889,"top":0.12111111,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"História nahlasovania","depth":19,"bounds":{"left":0.16388889,"top":0.12111111,"width":0.14166667,"height":0.044444446},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"História nahlasovania","depth":21,"bounds":{"left":0.20555556,"top":0.13444445,"width":0.09340278,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Informácie","depth":16,"bounds":{"left":0.17222223,"top":0.19777778,"width":0.04375,"height":0.02},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Informácie","depth":17,"bounds":{"left":0.17222223,"top":0.19888888,"width":0.04375,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Tlač","depth":16,"bounds":{"left":0.22152779,"top":0.19777778,"width":0.017361112,"height":0.02},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Tlač","depth":17,"bounds":{"left":0.22152779,"top":0.19888888,"width":0.017361112,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Autorské práva","depth":16,"bounds":{"left":0.17222223,"top":0.21777777,"width":0.060763888,"height":0.02},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Autorské práva","depth":17,"bounds":{"left":0.17222223,"top":0.2188889,"width":0.060763888,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kontaktujte nás","depth":16,"bounds":{"left":0.17222223,"top":0.23777778,"width":0.063194446,"height":0.02},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kontaktujte nás","depth":17,"bounds":{"left":0.17222223,"top":0.23888889,"width":0.063194446,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Autori","depth":16,"bounds":{"left":0.24097222,"top":0.23777778,"width":0.024652777,"height":0.02},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Autori","depth":17,"bounds":{"left":0.24097222,"top":0.23888889,"width":0.024652777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5023934186278916185
|
-3988266745553632567
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(66) Inbox | [EMAIL] | Proton Mail
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
[CircleCI] Workflow failed: jiminny / app on JY-20157-AJ-report-not-send-notification - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
(132) YouTube
(132) YouTube
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Sprievodca
Domovská stránka YouTube
BG
Preskočiť navigáciu
Preskočiť navigáciu
domoracki
domoracki
Vymazať vyhľadávací dopyt
Search
Vyhľadávať hlasom
Vytvoriť
Vytvoriť
Upozornenia
9+
Ponuka účtu
Domov
Domov
Domov
Shorts
Shorts
Shorts
Odbery
Odbery
Odbery
Unspeakable. K dispozícii je nový obsah.
Unspeakable
Unspeakable
EU Made Simple. K dispozícii je nový obsah.
EU Made Simple
EU Made Simple
Sam Harris. K dispozícii je nový obsah.
Sam Harris
Sam Harris
T90Official - Age Of Empires 2. K dispozícii je nový obsah.
T90Official - Age Of Empires 2
T90Official - Age Of Empires 2
TLDR News EU. K dispozícii je nový obsah.
TLDR News EU
TLDR News EU
Papa Ruzz. K dispozícii je nový obsah.
Papa Ruzz
Papa Ruzz
TE1 GAMING
TE1 GAMING
TE1 GAMING
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Moje
Moje
Moje
Váš kanál
Váš kanál
Váš kanál
História
História
História
Zoznamy
Zoznamy
Zoznamy
Pozrieť neskôr
Pozrieť neskôr
Pozrieť neskôr
Obľúbené videá
Obľúbené videá
Obľúbené videá
Vaše videá
Vaše videá
Vaše videá
Stiahnuté súbory
Stiahnuté súbory
Stiahnuté súbory
Zobraziť viac
Zobraziť viac
Zobraziť viac
Zobraziť viac
Preskúmať
Preskúmať
Hudba
Hudba
Hudba
Hry
Hry
Hry
Šport
Šport
Šport
Viac zo služby YouTube
Viac zo služby YouTube
YouTube Premium
YouTube Premium
YouTube Premium
YouTube Music
YouTube Music
YouTube Music
YouTube Kids
YouTube Kids
YouTube Kids
História nahlasovania
História nahlasovania
História nahlasovania
Informácie
Informácie
Tlač
Tlač
Autorské práva
Autorské práva
Kontaktujte nás
Kontaktujte nás
Autori
Autori...
|
NULL
|
|
75979
|
NULL
|
0
|
2026-04-24T07:17:49.894790+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015069894_m1.jpg...
|
Finder
|
Work
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB
MPEG-4 movie
Daily 2026-03-10.mp4...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"CleanShot 2026-04-24 at 09.48.56.mp4","depth":7,"value":"CleanShot 2026-04-24 at 09.48.56.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:11","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 11:58","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"724 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-23.mp4","depth":7,"value":"Daily 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 10:32","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,74 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-22.mp4","depth":7,"value":"Daily 2026-04-22.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,36 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-06.mp4","depth":7,"value":"Refinement 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 11:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,41 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-21.mp4","depth":7,"value":"Daily 2026-04-21.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"567,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-20.mp4","depth":7,"value":"Refinement 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 16:56","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,25 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-20.mp4","depth":7,"value":"Daily 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"698,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-17.mp4","depth":7,"value":"Daily 2026-04-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Apr 2026 at 10:16","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,16 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-16.mp4","depth":7,"value":"Daily 2026-04-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"513,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 Apr 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,75 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-04-14.mp4","depth":7,"value":"Retro 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 17:37","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-14.mp4","depth":7,"value":"Daily 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"924,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User pilot (Adi) 2026-04-09.mp4","depth":7,"value":"User pilot (Adi) 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 14:47","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"362,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-09.mp4","depth":7,"value":"Daily 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 10:07","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"748,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-08.mp4","depth":7,"value":"Daily 2026-04-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 Apr 2026 at 10:13","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,04 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-07.mp4","depth":7,"value":"Daily 2026-04-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 Apr 2026 at 10:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"575,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-06.mp4","depth":7,"value":"Daily 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Apr 2026 at 10:08","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"720,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-03.mp4","depth":7,"value":"Daily 2026-04-03.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-01 & task split.mp4","depth":7,"value":"Planning 2026-04-01 & task split.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Apr 2026 at 12:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-31.mp4","depth":7,"value":"Retro 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 18:29","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,4 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-31.mp4","depth":7,"value":"Daily 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"923,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-30.mp4","depth":7,"value":"Refinement 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 17:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,77 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-30.mp4","depth":7,"value":"Daily 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 10:05","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"641,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-27.mp4","depth":7,"value":"Daily 2026-03-27.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27 Mar 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"884,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-26.mp4","depth":7,"value":"Daily 2026-03-26.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"26 Mar 2026 at 9:59","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"476,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-24.mp4","depth":7,"value":"Daily 2026-03-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"550,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-23.mp4","depth":7,"value":"Refinement 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 17:03","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-23.mp4","depth":7,"value":"Daily 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"438,9 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"BE chapter 2026-03-20.mp4","depth":7,"value":"BE chapter 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 11:46","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-20.mp4","depth":7,"value":"Daily 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"430,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18-converted.mp4","depth":7,"value":"Planing 2026-03-18-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 12:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,38 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-02-09-converted.mp4","depth":7,"value":"Refinement 2026-02-09-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 11:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,26 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-19.mp4","depth":7,"value":"Daily 2026-03-19.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 9:57","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"386,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Review 2026-03-18.mp4","depth":7,"value":"Review 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 16:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"705,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18.mp4","depth":7,"value":"Planing 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,78 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-17.mp4","depth":7,"value":"Retro 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 17:40","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-17.mp4","depth":7,"value":"Daily 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 10:18","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,2 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-16.mp4","depth":7,"value":"Refinement 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 16:55","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,19 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-16.mp4","depth":7,"value":"Daily 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 10:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"592,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-13.mp4","depth":7,"value":"Daily 2026-03-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Mar 2026 at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-03-12.mp4","depth":7,"value":"1-1 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 18:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"637,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-12.mp4","depth":7,"value":"Daily 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"978,7 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-11.mp4","depth":7,"value":"Daily 2026-03-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 Mar 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"798,7 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-10.mp4","depth":7,"bounds":{"left":0.89513886,"top":0.0,"width":0.10208333,"height":0.017777778},"value":"Daily 2026-03-10.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
3969478855214955339
|
8618363347829170507
|
idle
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB
MPEG-4 movie
Daily 2026-03-10.mp4...
|
75977
|
|
75978
|
NULL
|
0
|
2026-04-24T07:17:28.886060+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777015048886_m2.jpg...
|
Finder
|
Work
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.6156915,"top":0.19473264,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.6236702,"top":0.21468475,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.6236702,"top":0.23703113,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.6236702,"top":0.25937748,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.6236702,"top":0.28172386,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.6236702,"top":0.30407023,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.6236702,"top":0.3264166,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.6236702,"top":0.34876296,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.6156915,"top":0.37669593,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.6236702,"top":0.39664805,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.6236702,"top":0.41899443,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.6156915,"top":0.44692737,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.6236702,"top":0.4668795,"width":0.043218084,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.6675532,"top":0.46847567,"width":0.0043218085,"height":0.009577015},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.6236702,"top":0.48922586,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.6156915,"top":0.5171588,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.6236702,"top":0.5371109,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.6236702,"top":0.5594573,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.6236702,"top":0.5818037,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.6236702,"top":0.60415006,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.6236702,"top":0.62649643,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.6236702,"top":0.64884275,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.6236702,"top":0.6711891,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.6236702,"top":0.6935355,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.6938165,"top":0.19952115,"width":0.011635638,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.7875665,"top":0.19952115,"width":0.026928192,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.84773934,"top":0.19952115,"width":0.008976064,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.8799867,"top":0.19952115,"width":0.00930851,"height":0.011173184},"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"bounds":{"left":0.6938165,"top":0.22106944,"width":0.013297873,"height":0.012769354},"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:12","depth":7,"bounds":{"left":0.7875665,"top":0.22106944,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.8713431,"top":0.22106944,"width":0.0056515955,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"bounds":{"left":0.8799867,"top":0.22106944,"width":0.014295213,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"CleanShot 2026-04-24 at 09.48.56.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.23703113,"width":0.084773935,"height":0.012769354},"value":"CleanShot 2026-04-24 at 09.48.56.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:11","depth":7,"bounds":{"left":0.7875665,"top":0.23703113,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"bounds":{"left":0.85538566,"top":0.23703113,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.23703113,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.2529928,"width":0.08543883,"height":0.012769354},"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 11:58","depth":7,"bounds":{"left":0.7875665,"top":0.2529928,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"724 MB","depth":7,"bounds":{"left":0.859375,"top":0.2529928,"width":0.017287234,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.2529928,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-23.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.26895452,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 10:32","depth":7,"bounds":{"left":0.7875665,"top":0.26895452,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,74 GB","depth":7,"bounds":{"left":0.8587101,"top":0.26895452,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.26895452,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-22.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.2849162,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-22.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22 Apr 2026 at 10:21","depth":7,"bounds":{"left":0.7875665,"top":0.2849162,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,36 GB","depth":7,"bounds":{"left":0.8587101,"top":0.2849162,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.2849162,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-06.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.3008779,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 11:02","depth":7,"bounds":{"left":0.7875665,"top":0.3008779,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,41 GB","depth":7,"bounds":{"left":0.8587101,"top":0.3008779,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.3008779,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-21.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.31683958,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-21.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 10:00","depth":7,"bounds":{"left":0.7875665,"top":0.31683958,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"567,8 MB","depth":7,"bounds":{"left":0.85538566,"top":0.31683958,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.31683958,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-20.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.33280128,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 16:56","depth":7,"bounds":{"left":0.7875665,"top":0.33280128,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,25 GB","depth":7,"bounds":{"left":0.8587101,"top":0.33280128,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.33280128,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-20.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.34876296,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 10:06","depth":7,"bounds":{"left":0.7875665,"top":0.34876296,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"698,5 MB","depth":7,"bounds":{"left":0.85538566,"top":0.34876296,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.34876296,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-17.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.36472467,"width":0.048204787,"height":0.012769354},"value":"Daily 2026-04-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Apr 2026 at 10:16","depth":7,"bounds":{"left":0.7875665,"top":0.36472467,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,16 GB","depth":7,"bounds":{"left":0.8587101,"top":0.36472467,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.36472467,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-16.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.38068634,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Apr 2026 at 10:00","depth":7,"bounds":{"left":0.7875665,"top":0.38068634,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"513,4 MB","depth":7,"bounds":{"left":0.85538566,"top":0.38068634,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.38068634,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.39664805,"width":0.05618351,"height":0.012769354},"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 Apr 2026 at 11:14","depth":7,"bounds":{"left":0.7875665,"top":0.39664805,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,75 GB","depth":7,"bounds":{"left":0.8587101,"top":0.39664805,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.39664805,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-04-14.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.41260973,"width":0.049867023,"height":0.012769354},"value":"Retro 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 17:37","depth":7,"bounds":{"left":0.7875665,"top":0.41260973,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,44 GB","depth":7,"bounds":{"left":0.8587101,"top":0.41260973,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.41260973,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-14.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.42857143,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 10:09","depth":7,"bounds":{"left":0.7875665,"top":0.42857143,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"924,4 MB","depth":7,"bounds":{"left":0.85538566,"top":0.42857143,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.42857143,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"User pilot (Adi) 2026-04-09.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.4445331,"width":0.07014628,"height":0.012769354},"value":"User pilot (Adi) 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 14:47","depth":7,"bounds":{"left":0.7875665,"top":0.4445331,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"362,6 MB","depth":7,"bounds":{"left":0.85538566,"top":0.4445331,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.4445331,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-09.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.46049482,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 10:07","depth":7,"bounds":{"left":0.7875665,"top":0.46049482,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"748,8 MB","depth":7,"bounds":{"left":0.85538566,"top":0.46049482,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.46049482,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-08.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.4764565,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 Apr 2026 at 10:13","depth":7,"bounds":{"left":0.7875665,"top":0.4764565,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,04 GB","depth":7,"bounds":{"left":0.8587101,"top":0.4764565,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.4764565,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-07.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.4924182,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 Apr 2026 at 10:01","depth":7,"bounds":{"left":0.7875665,"top":0.4924182,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"575,5 MB","depth":7,"bounds":{"left":0.85538566,"top":0.4924182,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.4924182,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-06.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.5083799,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Apr 2026 at 10:08","depth":7,"bounds":{"left":0.7875665,"top":0.5083799,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"720,5 MB","depth":7,"bounds":{"left":0.85538566,"top":0.5083799,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.5083799,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-03.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.5243416,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-03.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 Apr 2026 at 10:21","depth":7,"bounds":{"left":0.7875665,"top":0.5243416,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"bounds":{"left":0.8587101,"top":0.5243416,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.5243416,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-01 & task split.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.5403033,"width":0.080119684,"height":0.012769354},"value":"Planning 2026-04-01 & task split.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Apr 2026 at 12:20","depth":7,"bounds":{"left":0.7875665,"top":0.5403033,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,68 GB","depth":7,"bounds":{"left":0.8587101,"top":0.5403033,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.5403033,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-31.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.55626494,"width":0.049867023,"height":0.012769354},"value":"Retro 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 18:29","depth":7,"bounds":{"left":0.7875665,"top":0.55626494,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"3,4 GB","depth":7,"bounds":{"left":0.86136967,"top":0.55626494,"width":0.015292553,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.55626494,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-31.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.57222664,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 10:10","depth":7,"bounds":{"left":0.7875665,"top":0.57222664,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"923,6 MB","depth":7,"bounds":{"left":0.85538566,"top":0.57222664,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.57222664,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-30.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.58818835,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 17:12","depth":7,"bounds":{"left":0.7875665,"top":0.58818835,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,77 GB","depth":7,"bounds":{"left":0.8587101,"top":0.58818835,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.58818835,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-30.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.60415006,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 10:05","depth":7,"bounds":{"left":0.7875665,"top":0.60415006,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"641,8 MB","depth":7,"bounds":{"left":0.85538566,"top":0.60415006,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.60415006,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-27.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6201117,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-27.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27 Mar 2026 at 10:09","depth":7,"bounds":{"left":0.7875665,"top":0.6201117,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"884,3 MB","depth":7,"bounds":{"left":0.85538566,"top":0.6201117,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6201117,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-26.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6360734,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-26.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"26 Mar 2026 at 9:59","depth":7,"bounds":{"left":0.7875665,"top":0.6360734,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"476,6 MB","depth":7,"bounds":{"left":0.85538566,"top":0.6360734,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6360734,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-24.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6520351,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Mar 2026 at 10:00","depth":7,"bounds":{"left":0.7875665,"top":0.6520351,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"550,8 MB","depth":7,"bounds":{"left":0.85538566,"top":0.6520351,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6520351,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-23.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6679968,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 17:03","depth":7,"bounds":{"left":0.7875665,"top":0.6679968,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"3,44 GB","depth":7,"bounds":{"left":0.8587101,"top":0.6679968,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6679968,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-23.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6839585,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 10:00","depth":7,"bounds":{"left":0.7875665,"top":0.6839585,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"438,9 MB","depth":7,"bounds":{"left":0.85538566,"top":0.6839585,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6839585,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"BE chapter 2026-03-20.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.6999202,"width":0.061502658,"height":0.012769354},"value":"BE chapter 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 11:46","depth":7,"bounds":{"left":0.7875665,"top":0.6999202,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,68 GB","depth":7,"bounds":{"left":0.8587101,"top":0.6999202,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.6999202,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-20.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.7158819,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 10:06","depth":7,"bounds":{"left":0.7875665,"top":0.7158819,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"430,4 MB","depth":7,"bounds":{"left":0.85538566,"top":0.7158819,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.7158819,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18-converted.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.7318436,"width":0.076130316,"height":0.012769354},"value":"Planing 2026-03-18-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 12:01","depth":7,"bounds":{"left":0.7875665,"top":0.7318436,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,38 GB","depth":7,"bounds":{"left":0.8587101,"top":0.7318436,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.7318436,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-02-09-converted.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.74780524,"width":0.084773935,"height":0.012769354},"value":"Refinement 2026-02-09-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 11:35","depth":7,"bounds":{"left":0.7875665,"top":0.74780524,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,26 GB","depth":7,"bounds":{"left":0.8587101,"top":0.74780524,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.74780524,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-19.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.76376694,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-19.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 9:57","depth":7,"bounds":{"left":0.7875665,"top":0.76376694,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"386,3 MB","depth":7,"bounds":{"left":0.85538566,"top":0.76376694,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.76376694,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Review 2026-03-18.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.77972865,"width":0.05319149,"height":0.012769354},"value":"Review 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 16:20","depth":7,"bounds":{"left":0.7875665,"top":0.77972865,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"705,8 MB","depth":7,"bounds":{"left":0.85538566,"top":0.77972865,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.77972865,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.79569036,"width":0.053856384,"height":0.012769354},"value":"Planing 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 11:14","depth":7,"bounds":{"left":0.7875665,"top":0.79569036,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,78 GB","depth":7,"bounds":{"left":0.8587101,"top":0.79569036,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.79569036,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-17.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.81165206,"width":0.04920213,"height":0.012769354},"value":"Retro 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 17:40","depth":7,"bounds":{"left":0.7875665,"top":0.81165206,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":7,"bounds":{"left":0.8587101,"top":0.81165206,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.81165206,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-17.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.8276137,"width":0.048204787,"height":0.012769354},"value":"Daily 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 10:18","depth":7,"bounds":{"left":0.7875665,"top":0.8276137,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,2 GB","depth":7,"bounds":{"left":0.86136967,"top":0.8276137,"width":0.015292553,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.8276137,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-16.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.8435754,"width":0.061835106,"height":0.012769354},"value":"Refinement 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 16:55","depth":7,"bounds":{"left":0.7875665,"top":0.8435754,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,19 GB","depth":7,"bounds":{"left":0.8587101,"top":0.8435754,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.8435754,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-16.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.8595371,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 10:02","depth":7,"bounds":{"left":0.7875665,"top":0.8595371,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"592,2 MB","depth":7,"bounds":{"left":0.85538566,"top":0.8595371,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.8595371,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-13.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.87549883,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Mar 2026 at 10:12","depth":7,"bounds":{"left":0.7875665,"top":0.87549883,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"bounds":{"left":0.8587101,"top":0.87549883,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.87549883,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-03-12.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.8914605,"width":0.04886968,"height":0.012769354},"value":"1-1 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 18:35","depth":7,"bounds":{"left":0.7875665,"top":0.8914605,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"637,6 MB","depth":7,"bounds":{"left":0.85538566,"top":0.8914605,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.8914605,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-12.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.9074222,"width":0.04488032,"height":0.012769354},"value":"Daily 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 10:10","depth":7,"bounds":{"left":0.7875665,"top":0.9074222,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"978,7 MB","depth":7,"bounds":{"left":0.85538566,"top":0.9074222,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.8799867,"top":0.9074222,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-11.mp4","depth":7,"bounds":{"left":0.6988032,"top":0.9233839,"width":0.048204787,"height":0.012769354},"value":"Daily 2026-03-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 Mar 2026 at 10:06","depth":7,"bounds":{"left":0.7875665,"top":0.9233839,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"798,7 MB","depth":7,"bounds":{"left":0.85538566,"top":0.9233839,"width":0.021276595,"height":0.012769354},"role_description":"text"}]...
|
-8798122457613553110
|
8618363347829170507
|
idle
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB...
|
75976
|
|
75959
|
NULL
|
0
|
2026-04-24T07:12:45.898850+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014765898_m1.jpg...
|
Finder
|
Work
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB
MPEG-4 movie
Daily 2026-03-10.mp4
10 Mar 2026 at 9:57
404,6 MB
MPEG-4 movie
Refinement 2026-03-09.mp4
9 Mar 2026 at 17:04
4,16 GB...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"CleanShot 2026-04-24 at 09.48.56.mp4","depth":7,"value":"CleanShot 2026-04-24 at 09.48.56.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:11","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 11:58","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"724 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-23.mp4","depth":7,"value":"Daily 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 10:32","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,74 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-22.mp4","depth":7,"value":"Daily 2026-04-22.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,36 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-06.mp4","depth":7,"value":"Refinement 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 11:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,41 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-21.mp4","depth":7,"value":"Daily 2026-04-21.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"567,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-20.mp4","depth":7,"value":"Refinement 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 16:56","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,25 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-20.mp4","depth":7,"value":"Daily 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"698,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-17.mp4","depth":7,"value":"Daily 2026-04-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Apr 2026 at 10:16","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,16 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-16.mp4","depth":7,"value":"Daily 2026-04-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Apr 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"513,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 Apr 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,75 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-04-14.mp4","depth":7,"value":"Retro 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 17:37","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-14.mp4","depth":7,"value":"Daily 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"924,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"User pilot (Adi) 2026-04-09.mp4","depth":7,"value":"User pilot (Adi) 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 14:47","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"362,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-09.mp4","depth":7,"value":"Daily 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 10:07","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"748,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-08.mp4","depth":7,"value":"Daily 2026-04-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 Apr 2026 at 10:13","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,04 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-07.mp4","depth":7,"value":"Daily 2026-04-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 Apr 2026 at 10:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"575,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-06.mp4","depth":7,"value":"Daily 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Apr 2026 at 10:08","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"720,5 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-03.mp4","depth":7,"value":"Daily 2026-04-03.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 Apr 2026 at 10:21","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-01 & task split.mp4","depth":7,"value":"Planning 2026-04-01 & task split.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Apr 2026 at 12:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-31.mp4","depth":7,"value":"Retro 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 18:29","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,4 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-31.mp4","depth":7,"value":"Daily 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"923,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-30.mp4","depth":7,"value":"Refinement 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 17:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,77 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-30.mp4","depth":7,"value":"Daily 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 10:05","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"641,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-27.mp4","depth":7,"value":"Daily 2026-03-27.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27 Mar 2026 at 10:09","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"884,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-26.mp4","depth":7,"value":"Daily 2026-03-26.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"26 Mar 2026 at 9:59","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"476,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-24.mp4","depth":7,"value":"Daily 2026-03-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"550,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-23.mp4","depth":7,"value":"Refinement 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 17:03","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"3,44 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-23.mp4","depth":7,"value":"Daily 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 10:00","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"438,9 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"BE chapter 2026-03-20.mp4","depth":7,"value":"BE chapter 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 11:46","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,68 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-20.mp4","depth":7,"value":"Daily 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"430,4 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18-converted.mp4","depth":7,"value":"Planing 2026-03-18-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 12:01","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,38 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-02-09-converted.mp4","depth":7,"value":"Refinement 2026-02-09-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 11:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,26 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-19.mp4","depth":7,"value":"Daily 2026-03-19.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 9:57","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"386,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Review 2026-03-18.mp4","depth":7,"value":"Review 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 16:20","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"705,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18.mp4","depth":7,"value":"Planing 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 11:14","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"2,78 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-17.mp4","depth":7,"value":"Retro 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 17:40","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-17.mp4","depth":7,"value":"Daily 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 10:18","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,2 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-16.mp4","depth":7,"value":"Refinement 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 16:55","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"4,19 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-16.mp4","depth":7,"value":"Daily 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 10:02","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"592,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-13.mp4","depth":7,"value":"Daily 2026-03-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Mar 2026 at 10:12","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-03-12.mp4","depth":7,"value":"1-1 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 18:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"637,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-12.mp4","depth":7,"value":"Daily 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 10:10","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"978,7 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-11.mp4","depth":7,"value":"Daily 2026-03-11.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11 Mar 2026 at 10:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"798,7 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-10.mp4","depth":7,"bounds":{"left":0.89513886,"top":0.0,"width":0.10069445,"height":0.017777778},"value":"Daily 2026-03-10.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10 Mar 2026 at 9:57","depth":7,"bounds":{"left":1.0,"top":0.0,"width":-0.08055556,"height":0.017777778},"role_description":"text"},{"role":"AXStaticText","text":"404,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-09.mp4","depth":7,"bounds":{"left":0.89513886,"top":0.0,"width":0.10208333,"height":0.017777778},"value":"Refinement 2026-03-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Mar 2026 at 17:04","depth":7,"bounds":{"left":1.0,"top":0.0,"width":-0.08055556,"height":0.017777778},"role_description":"text"},{"role":"AXStaticText","text":"4,16 GB","depth":7,"role_description":"text"}]...
|
5813516076538840094
|
-605008689025605303
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Today at 10:12
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4
12 Mar 2026 at 10:10
978,7 MB
MPEG-4 movie
Daily 2026-03-11.mp4
11 Mar 2026 at 10:06
798,7 MB
MPEG-4 movie
Daily 2026-03-10.mp4
10 Mar 2026 at 9:57
404,6 MB
MPEG-4 movie
Refinement 2026-03-09.mp4
9 Mar 2026 at 17:04
4,16 GB...
|
75958
|
|
75957
|
NULL
|
0
|
2026-04-24T07:12:24.288896+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014744288_m2.jpg...
|
Finder
|
Work
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Yesterday at 12:15
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Favourites","depth":6,"bounds":{"left":0.15392287,"top":0.15403032,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"jiminny","depth":6,"bounds":{"left":0.1619016,"top":0.17398244,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"AirDrop","depth":6,"bounds":{"left":0.1619016,"top":0.1963288,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Recents","depth":6,"bounds":{"left":0.1619016,"top":0.21867518,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Applications","depth":6,"bounds":{"left":0.1619016,"top":0.24102154,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Documents","depth":6,"bounds":{"left":0.1619016,"top":0.26336792,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Downloads","depth":6,"bounds":{"left":0.1619016,"top":0.2857143,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"lukas","depth":6,"bounds":{"left":0.1619016,"top":0.30806065,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"iCloud","depth":6,"bounds":{"left":0.15392287,"top":0.33599362,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"iCloud Drive","depth":6,"bounds":{"left":0.1619016,"top":0.35594574,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Sync folder","depth":6,"bounds":{"left":0.1619016,"top":0.3782921,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Locations","depth":6,"bounds":{"left":0.15392287,"top":0.40622506,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"DXP4800PLUS-B5F","depth":6,"bounds":{"left":0.1619016,"top":0.42617717,"width":0.043218084,"height":0.012769354},"role_description":"text"},{"role":"AXButton","text":"Eject","depth":6,"bounds":{"left":0.20578457,"top":0.42777336,"width":0.0043218085,"height":0.009577015},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Network","depth":6,"bounds":{"left":0.1619016,"top":0.44852355,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Tags","depth":6,"bounds":{"left":0.15392287,"top":0.4764565,"width":0.06216755,"height":0.015163607},"automation_id":"xSidebarHeader","role_description":"text"},{"role":"AXStaticText","text":"CRM","depth":6,"bounds":{"left":0.1619016,"top":0.4964086,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Orange","depth":6,"bounds":{"left":0.1619016,"top":0.51875496,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Red","depth":6,"bounds":{"left":0.1619016,"top":0.54110134,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Yellow","depth":6,"bounds":{"left":0.1619016,"top":0.5634477,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Green","depth":6,"bounds":{"left":0.1619016,"top":0.5857941,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Blue","depth":6,"bounds":{"left":0.1619016,"top":0.60814047,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Purple","depth":6,"bounds":{"left":0.1619016,"top":0.63048685,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"All Tags…","depth":6,"bounds":{"left":0.1619016,"top":0.6528332,"width":0.049534574,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Name","depth":7,"bounds":{"left":0.23204787,"top":0.15881884,"width":0.011635638,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Date Modified","depth":7,"bounds":{"left":0.3257979,"top":0.15881884,"width":0.026928192,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Size","depth":7,"bounds":{"left":0.38597074,"top":0.15881884,"width":0.008976064,"height":0.011173184},"role_description":"text"},{"role":"AXStaticText","text":"Kind","depth":7,"bounds":{"left":0.41821808,"top":0.15881884,"width":0.00930851,"height":0.011173184},"role_description":"text"},{"role":"AXTextField","text":"2026","depth":7,"bounds":{"left":0.23204787,"top":0.18036711,"width":0.013297873,"height":0.012769354},"value":"2026","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 12:15","depth":7,"bounds":{"left":0.3257979,"top":0.18036711,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"--","depth":7,"bounds":{"left":0.40957448,"top":0.18036711,"width":0.0056515955,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"bounds":{"left":0.41821808,"top":0.18036711,"width":0.014295213,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"CleanShot 2026-04-24 at 09.48.56.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.1963288,"width":0.077792555,"height":0.012769354},"value":"CleanShot 2026-04-24 at 09.48.56.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today at 10:11","depth":7,"bounds":{"left":0.3257979,"top":0.1963288,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"832,2 MB","depth":7,"bounds":{"left":0.39361703,"top":0.1963288,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.1963288,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"User Pilot introduction Adi 2026-04-23.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.2122905,"width":0.08543883,"height":0.012769354},"value":"User Pilot introduction Adi 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 11:58","depth":7,"bounds":{"left":0.3257979,"top":0.2122905,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"724 MB","depth":7,"bounds":{"left":0.39760637,"top":0.2122905,"width":0.017287234,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.2122905,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-23.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.22825219,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 10:32","depth":7,"bounds":{"left":0.3257979,"top":0.22825219,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,74 GB","depth":7,"bounds":{"left":0.39694148,"top":0.22825219,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.22825219,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-22.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.2442139,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-22.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22 Apr 2026 at 10:21","depth":7,"bounds":{"left":0.3257979,"top":0.2442139,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,36 GB","depth":7,"bounds":{"left":0.39694148,"top":0.2442139,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.2442139,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-06.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.2601756,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 11:02","depth":7,"bounds":{"left":0.3257979,"top":0.2601756,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,41 GB","depth":7,"bounds":{"left":0.39694148,"top":0.2601756,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.2601756,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-21.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.27613726,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-21.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"21 Apr 2026 at 10:00","depth":7,"bounds":{"left":0.3257979,"top":0.27613726,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"567,8 MB","depth":7,"bounds":{"left":0.39361703,"top":0.27613726,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.27613726,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-04-20.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.29209897,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 16:56","depth":7,"bounds":{"left":0.3257979,"top":0.29209897,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,25 GB","depth":7,"bounds":{"left":0.39694148,"top":0.29209897,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.29209897,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-20.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.30806065,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Apr 2026 at 10:06","depth":7,"bounds":{"left":0.3257979,"top":0.30806065,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"698,5 MB","depth":7,"bounds":{"left":0.39361703,"top":0.30806065,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.30806065,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-17.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.32402235,"width":0.048204787,"height":0.012769354},"value":"Daily 2026-04-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Apr 2026 at 10:16","depth":7,"bounds":{"left":0.3257979,"top":0.32402235,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,16 GB","depth":7,"bounds":{"left":0.39694148,"top":0.32402235,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.32402235,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-16.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.33998403,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Apr 2026 at 10:00","depth":7,"bounds":{"left":0.3257979,"top":0.33998403,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"513,4 MB","depth":7,"bounds":{"left":0.39361703,"top":0.33998403,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.33998403,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-15.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.35594574,"width":0.05618351,"height":0.012769354},"value":"Planning 2026-04-15.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15 Apr 2026 at 11:14","depth":7,"bounds":{"left":0.3257979,"top":0.35594574,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,75 GB","depth":7,"bounds":{"left":0.39694148,"top":0.35594574,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.35594574,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-04-14.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.3719074,"width":0.049867023,"height":0.012769354},"value":"Retro 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 17:37","depth":7,"bounds":{"left":0.3257979,"top":0.3719074,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,44 GB","depth":7,"bounds":{"left":0.39694148,"top":0.3719074,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.3719074,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-14.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.38786912,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-14.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 10:09","depth":7,"bounds":{"left":0.3257979,"top":0.38786912,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"924,4 MB","depth":7,"bounds":{"left":0.39361703,"top":0.38786912,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.38786912,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"User pilot (Adi) 2026-04-09.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.4038308,"width":0.07014628,"height":0.012769354},"value":"User pilot (Adi) 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 14:47","depth":7,"bounds":{"left":0.3257979,"top":0.4038308,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"362,6 MB","depth":7,"bounds":{"left":0.39361703,"top":0.4038308,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.41821808,"top":0.4038308,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-09.mp4","depth":7,"bounds":{"left":0.23703457,"top":0.4197925,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-09.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9 Apr 2026 at 10:07","depth":7,"bounds":{"left":0.3257979,"top":0.4197925,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"748,8 MB","depth":7,"bounds":{"left":0.39361703,"top":0.4197925,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.41340783,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-08.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.4293695,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-08.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8 Apr 2026 at 10:13","depth":7,"bounds":{"left":0.84042555,"top":0.4293695,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,04 GB","depth":7,"bounds":{"left":0.9115692,"top":0.4293695,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.4293695,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-07.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.44533122,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-04-07.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7 Apr 2026 at 10:01","depth":7,"bounds":{"left":0.84042555,"top":0.44533122,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"575,5 MB","depth":7,"bounds":{"left":0.90824467,"top":0.44533122,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.44533122,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-06.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.4612929,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-06.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 Apr 2026 at 10:08","depth":7,"bounds":{"left":0.84042555,"top":0.4612929,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"720,5 MB","depth":7,"bounds":{"left":0.90824467,"top":0.4612929,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.4612929,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-04-03.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.4772546,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-04-03.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 Apr 2026 at 10:21","depth":7,"bounds":{"left":0.84042555,"top":0.4772546,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"bounds":{"left":0.9115692,"top":0.4772546,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.4772546,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planning 2026-04-01 & task split.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.49321628,"width":0.080119684,"height":0.012769354},"value":"Planning 2026-04-01 & task split.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 Apr 2026 at 12:20","depth":7,"bounds":{"left":0.84042555,"top":0.49321628,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,68 GB","depth":7,"bounds":{"left":0.9115692,"top":0.49321628,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.49321628,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-31.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.509178,"width":0.049867023,"height":0.012769354},"value":"Retro 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 18:29","depth":7,"bounds":{"left":0.84042555,"top":0.509178,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"3,4 GB","depth":7,"bounds":{"left":0.91422874,"top":0.509178,"width":0.015292553,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.509178,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-31.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.5251397,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-31.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"31 Mar 2026 at 10:10","depth":7,"bounds":{"left":0.84042555,"top":0.5251397,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"923,6 MB","depth":7,"bounds":{"left":0.90824467,"top":0.5251397,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.5251397,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-30.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.54110134,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 17:12","depth":7,"bounds":{"left":0.84042555,"top":0.54110134,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,77 GB","depth":7,"bounds":{"left":0.9115692,"top":0.54110134,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.54110134,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-30.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.55706304,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-30.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"30 Mar 2026 at 10:05","depth":7,"bounds":{"left":0.84042555,"top":0.55706304,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"641,8 MB","depth":7,"bounds":{"left":0.90824467,"top":0.55706304,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.55706304,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-27.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.57302475,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-27.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"27 Mar 2026 at 10:09","depth":7,"bounds":{"left":0.84042555,"top":0.57302475,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"884,3 MB","depth":7,"bounds":{"left":0.90824467,"top":0.57302475,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.57302475,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-26.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.58898646,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-26.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"26 Mar 2026 at 9:59","depth":7,"bounds":{"left":0.84042555,"top":0.58898646,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"476,6 MB","depth":7,"bounds":{"left":0.90824467,"top":0.58898646,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.58898646,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-24.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6049481,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-24.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"24 Mar 2026 at 10:00","depth":7,"bounds":{"left":0.84042555,"top":0.6049481,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"550,8 MB","depth":7,"bounds":{"left":0.90824467,"top":0.6049481,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6049481,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-23.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6209098,"width":0.0625,"height":0.012769354},"value":"Refinement 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 17:03","depth":7,"bounds":{"left":0.84042555,"top":0.6209098,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"3,44 GB","depth":7,"bounds":{"left":0.9115692,"top":0.6209098,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6209098,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-23.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6368715,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-23.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23 Mar 2026 at 10:00","depth":7,"bounds":{"left":0.84042555,"top":0.6368715,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"438,9 MB","depth":7,"bounds":{"left":0.90824467,"top":0.6368715,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6368715,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"BE chapter 2026-03-20.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6528332,"width":0.061502658,"height":0.012769354},"value":"BE chapter 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 11:46","depth":7,"bounds":{"left":0.84042555,"top":0.6528332,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,68 GB","depth":7,"bounds":{"left":0.9115692,"top":0.6528332,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6528332,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-20.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6687949,"width":0.049534574,"height":0.012769354},"value":"Daily 2026-03-20.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"20 Mar 2026 at 10:06","depth":7,"bounds":{"left":0.84042555,"top":0.6687949,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"430,4 MB","depth":7,"bounds":{"left":0.90824467,"top":0.6687949,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6687949,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18-converted.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.6847566,"width":0.076130316,"height":0.012769354},"value":"Planing 2026-03-18-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 12:01","depth":7,"bounds":{"left":0.84042555,"top":0.6847566,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,38 GB","depth":7,"bounds":{"left":0.9115692,"top":0.6847566,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.6847566,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-02-09-converted.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.7007183,"width":0.084773935,"height":0.012769354},"value":"Refinement 2026-02-09-converted.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 11:35","depth":7,"bounds":{"left":0.84042555,"top":0.7007183,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,26 GB","depth":7,"bounds":{"left":0.9115692,"top":0.7007183,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.7007183,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-19.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.71668,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-19.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"19 Mar 2026 at 9:57","depth":7,"bounds":{"left":0.84042555,"top":0.71668,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"386,3 MB","depth":7,"bounds":{"left":0.90824467,"top":0.71668,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.71668,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Review 2026-03-18.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.73264164,"width":0.05319149,"height":0.012769354},"value":"Review 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 16:20","depth":7,"bounds":{"left":0.84042555,"top":0.73264164,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"705,8 MB","depth":7,"bounds":{"left":0.90824467,"top":0.73264164,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.73264164,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Planing 2026-03-18.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.74860334,"width":0.053856384,"height":0.012769354},"value":"Planing 2026-03-18.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"18 Mar 2026 at 11:14","depth":7,"bounds":{"left":0.84042555,"top":0.74860334,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"2,78 GB","depth":7,"bounds":{"left":0.9115692,"top":0.74860334,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.74860334,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Retro 2026-03-17.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.76456505,"width":0.04920213,"height":0.012769354},"value":"Retro 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 17:40","depth":7,"bounds":{"left":0.84042555,"top":0.76456505,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,53 GB","depth":7,"bounds":{"left":0.9115692,"top":0.76456505,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.76456505,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-17.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.78052676,"width":0.048204787,"height":0.012769354},"value":"Daily 2026-03-17.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"17 Mar 2026 at 10:18","depth":7,"bounds":{"left":0.84042555,"top":0.78052676,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,2 GB","depth":7,"bounds":{"left":0.91422874,"top":0.78052676,"width":0.015292553,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.78052676,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Refinement 2026-03-16.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.7964884,"width":0.061835106,"height":0.012769354},"value":"Refinement 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 16:55","depth":7,"bounds":{"left":0.84042555,"top":0.7964884,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"4,19 GB","depth":7,"bounds":{"left":0.9115692,"top":0.7964884,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.7964884,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-16.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.8124501,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-16.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 Mar 2026 at 10:02","depth":7,"bounds":{"left":0.84042555,"top":0.8124501,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"592,2 MB","depth":7,"bounds":{"left":0.90824467,"top":0.8124501,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9328458,"top":0.8124501,"width":0.032912236,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-13.mp4","depth":7,"bounds":{"left":0.75166225,"top":0.8284118,"width":0.04886968,"height":0.012769354},"value":"Daily 2026-03-13.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Mar 2026 at 10:12","depth":7,"bounds":{"left":0.88331115,"top":0.81803674,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"1,02 GB","depth":7,"bounds":{"left":0.9544548,"top":0.81803674,"width":0.017952127,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9757314,"top":0.81803674,"width":0.024268627,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"1-1 2026-03-12.mp4","depth":7,"bounds":{"left":0.79454786,"top":0.8339984,"width":0.04886968,"height":0.012769354},"value":"1-1 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"12 Mar 2026 at 18:35","depth":7,"bounds":{"left":0.88331115,"top":0.8339984,"width":0.056848403,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"637,6 MB","depth":7,"bounds":{"left":0.95113033,"top":0.8339984,"width":0.021276595,"height":0.012769354},"role_description":"text"},{"role":"AXStaticText","text":"MPEG-4 movie","depth":7,"bounds":{"left":0.9757314,"top":0.8339984,"width":0.024268627,"height":0.012769354},"role_description":"text"},{"role":"AXTextField","text":"Daily 2026-03-12.mp4","depth":7,"bounds":{"left":0.79454786,"top":0.8499601,"width":0.04488032,"height":0.012769354},"value":"Daily 2026-03-12.mp4","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-3434633693650109857
|
-2910852797750926901
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
2026
Yesterday at 12:15
--
Folder
CleanShot 2026-04-24 at 09.48.56.mp4
Today at 10:11
832,2 MB
MPEG-4 movie
User Pilot introduction Adi 2026-04-23.mp4
Yesterday at 11:58
724 MB
MPEG-4 movie
Daily 2026-04-23.mp4
Yesterday at 10:32
1,74 GB
MPEG-4 movie
Daily 2026-04-22.mp4
22 Apr 2026 at 10:21
1,36 GB
MPEG-4 movie
Refinement 2026-04-06.mp4
21 Apr 2026 at 11:02
2,41 GB
MPEG-4 movie
Daily 2026-04-21.mp4
21 Apr 2026 at 10:00
567,8 MB
MPEG-4 movie
Refinement 2026-04-20.mp4
20 Apr 2026 at 16:56
4,25 GB
MPEG-4 movie
Daily 2026-04-20.mp4
20 Apr 2026 at 10:06
698,5 MB
MPEG-4 movie
Daily 2026-04-17.mp4
17 Apr 2026 at 10:16
1,16 GB
MPEG-4 movie
Daily 2026-04-16.mp4
16 Apr 2026 at 10:00
513,4 MB
MPEG-4 movie
Planning 2026-04-15.mp4
15 Apr 2026 at 11:14
2,75 GB
MPEG-4 movie
Retro 2026-04-14.mp4
14 Apr 2026 at 17:37
1,44 GB
MPEG-4 movie
Daily 2026-04-14.mp4
14 Apr 2026 at 10:09
924,4 MB
MPEG-4 movie
User pilot (Adi) 2026-04-09.mp4
9 Apr 2026 at 14:47
362,6 MB
MPEG-4 movie
Daily 2026-04-09.mp4
9 Apr 2026 at 10:07
748,8 MB
MPEG-4 movie
Daily 2026-04-08.mp4
8 Apr 2026 at 10:13
1,04 GB
MPEG-4 movie
Daily 2026-04-07.mp4
7 Apr 2026 at 10:01
575,5 MB
MPEG-4 movie
Daily 2026-04-06.mp4
6 Apr 2026 at 10:08
720,5 MB
MPEG-4 movie
Daily 2026-04-03.mp4
3 Apr 2026 at 10:21
1,02 GB
MPEG-4 movie
Planning 2026-04-01 & task split.mp4
1 Apr 2026 at 12:20
4,68 GB
MPEG-4 movie
Retro 2026-03-31.mp4
31 Mar 2026 at 18:29
3,4 GB
MPEG-4 movie
Daily 2026-03-31.mp4
31 Mar 2026 at 10:10
923,6 MB
MPEG-4 movie
Refinement 2026-03-30.mp4
30 Mar 2026 at 17:12
2,77 GB
MPEG-4 movie
Daily 2026-03-30.mp4
30 Mar 2026 at 10:05
641,8 MB
MPEG-4 movie
Daily 2026-03-27.mp4
27 Mar 2026 at 10:09
884,3 MB
MPEG-4 movie
Daily 2026-03-26.mp4
26 Mar 2026 at 9:59
476,6 MB
MPEG-4 movie
Daily 2026-03-24.mp4
24 Mar 2026 at 10:00
550,8 MB
MPEG-4 movie
Refinement 2026-03-23.mp4
23 Mar 2026 at 17:03
3,44 GB
MPEG-4 movie
Daily 2026-03-23.mp4
23 Mar 2026 at 10:00
438,9 MB
MPEG-4 movie
BE chapter 2026-03-20.mp4
20 Mar 2026 at 11:46
1,68 GB
MPEG-4 movie
Daily 2026-03-20.mp4
20 Mar 2026 at 10:06
430,4 MB
MPEG-4 movie
Planing 2026-03-18-converted.mp4
19 Mar 2026 at 12:01
2,38 GB
MPEG-4 movie
Refinement 2026-02-09-converted.mp4
19 Mar 2026 at 11:35
2,26 GB
MPEG-4 movie
Daily 2026-03-19.mp4
19 Mar 2026 at 9:57
386,3 MB
MPEG-4 movie
Review 2026-03-18.mp4
18 Mar 2026 at 16:20
705,8 MB
MPEG-4 movie
Planing 2026-03-18.mp4
18 Mar 2026 at 11:14
2,78 GB
MPEG-4 movie
Retro 2026-03-17.mp4
17 Mar 2026 at 17:40
1,53 GB
MPEG-4 movie
Daily 2026-03-17.mp4
17 Mar 2026 at 10:18
1,2 GB
MPEG-4 movie
Refinement 2026-03-16.mp4
16 Mar 2026 at 16:55
4,19 GB
MPEG-4 movie
Daily 2026-03-16.mp4
16 Mar 2026 at 10:02
592,2 MB
MPEG-4 movie
Daily 2026-03-13.mp4
13 Mar 2026 at 10:12
1,02 GB
MPEG-4 movie
1-1 2026-03-12.mp4
12 Mar 2026 at 18:35
637,6 MB
MPEG-4 movie
Daily 2026-03-12.mp4...
|
NULL
|
|
75928
|
NULL
|
0
|
2026-04-24T07:07:41.165292+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014461165_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
True
|
meet.google.com/agt-teir-cwt?authuser=lukas.kovali meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Yankov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:07
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn off microphone (⌘ + d)
Your microphone is on....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"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.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"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.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"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.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"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.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Nikolov (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.17916666,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.17916666,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":22,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.5798611,"top":0.61,"width":0.14652778,"height":0.08888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.7239583,"top":0.6244444,"width":0.08090278,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.7017361,"top":0.6205556,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.63090277,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"bounds":{"left":0.6642361,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"bounds":{"left":0.69756943,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.78541666,"top":0.27611113,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9295139,"top":0.2911111,"width":0.07048613,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.90729165,"top":0.28666666,"width":0.09270835,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":17,"bounds":{"left":0.753125,"top":0.36277777,"width":0.07673611,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.27611113,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.2911111,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.28666666,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.87951386,"top":0.36277777,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7847222,"top":0.5338889,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9288194,"top":0.54888886,"width":0.07118058,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9065972,"top":0.54444444,"width":0.0934028,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"bounds":{"left":0.753125,"top":0.6205556,"width":0.088194445,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"2 others","depth":11,"bounds":{"left":0.87118053,"top":0.40888888,"width":0.11805555,"height":0.24444444},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 others","depth":13,"bounds":{"left":0.909375,"top":0.55722225,"width":0.041666668,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.753125,"top":0.87833333,"width":0.06875,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"bounds":{"left":0.96631944,"top":0.875,"width":0.018055556,"height":0.028888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:07","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.028472222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.08229167,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":12,"bounds":{"left":0.11736111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":15,"bounds":{"left":0.11736111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":13,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Nikolov is presenting","depth":12,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Turn off microphone (⌘ + d)","depth":10,"bounds":{"left":0.31180555,"top":0.9027778,"width":0.10729167,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5497998848443312294
|
-6425537991522190540
|
idle
|
accessibility
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Yankov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:07
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn off microphone (⌘ + d)
Your microphone is on....
|
75926
|
|
75927
|
NULL
|
0
|
2026-04-24T07:07:39.049450+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014459049_m2.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
True
|
meet.google.com/agt-teir-cwt?authuser=lukas.kovali meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Yankov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:07
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn off microphone (⌘ + d)
Your microphone is on....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"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.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Nikolov (Presenting, annotating)","depth":12,"bounds":{"left":0.30634972,"top":1.0,"width":0.08577128,"height":-0.072625756},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov (Presenting, annotating)","depth":13,"bounds":{"left":0.30634972,"top":1.0,"width":0.08577128,"height":-0.07342374},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.69498,"top":1.0,"width":0.019448139,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":22,"bounds":{"left":0.70827794,"top":1.0,"width":0.0021609042,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zoom in","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"2 others","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 others","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:07","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Nikolov is presenting","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Turn off microphone (⌘ + d)","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Your microphone is on.","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5497998848443312294
|
-6425537991522190540
|
idle
|
accessibility
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Yankov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:07
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn off microphone (⌘ + d)
Your microphone is on....
|
75925
|
|
75877
|
NULL
|
0
|
2026-04-24T07:02:16.112348+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014136112_m2.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
True
|
meet.google.com/agt-teir-cwt?authuser=lukas.kovali meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Nikolay Nikolov's presentation from your main screen
You can't unmute someone else's presentation
More options for Nikolay Nikolov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:02
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"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.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Nikolov (Presenting, annotating)","depth":12,"bounds":{"left":0.30634972,"top":1.0,"width":0.08577128,"height":-0.072625756},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov (Presenting, annotating)","depth":13,"bounds":{"left":0.30634972,"top":1.0,"width":0.08577128,"height":-0.07342374},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.69498,"top":1.0,"width":0.019448139,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":22,"bounds":{"left":0.70827794,"top":1.0,"width":0.0021609042,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Unpin Nikolay Nikolov's presentation from your main screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else's presentation","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Stefka Stoyanova to your main screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Stefka Stoyanova's microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Stefka Stoyanova","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"2 others","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 others","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:02","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Nikolov is presenting","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2903097321801039422
|
-6416532991290705092
|
click
|
accessibility
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Nikolay Nikolov's presentation from your main screen
You can't unmute someone else's presentation
More options for Nikolay Nikolov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:02
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
75875
|
|
75876
|
NULL
|
0
|
2026-04-24T07:02:16.112362+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777014136112_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
True
|
meet.google.com/agt-teir-cwt?authuser=lukas.kovali meet.google.com/agt-teir-cwt?authuser=lukas.kovalik%40jiminny.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Nikolay Nikolov's presentation from your main screen
You can't unmute someone else's presentation
More options for Nikolay Nikolov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:02
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"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.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"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.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"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.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"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.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Nikolov (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.17916666,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.17916666,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":22,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.5798611,"top":0.61,"width":0.14652778,"height":0.08888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.7239583,"top":0.6244444,"width":0.08090278,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.7017361,"top":0.6205556,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Unpin Nikolay Nikolov's presentation from your main screen","depth":13,"bounds":{"left":0.34618056,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else's presentation","depth":13,"bounds":{"left":0.37395832,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"bounds":{"left":0.4045139,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.63090277,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"bounds":{"left":0.6642361,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"bounds":{"left":0.69756943,"top":0.78333336,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.78541666,"top":0.27611113,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9295139,"top":0.2911111,"width":0.07048613,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.90729165,"top":0.28666666,"width":0.09270835,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":13,"bounds":{"left":0.7607639,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":13,"bounds":{"left":0.7885417,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":13,"bounds":{"left":0.8190972,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":17,"bounds":{"left":0.753125,"top":0.36277777,"width":0.07395833,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.27611113,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.2911111,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.28666666,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":13,"bounds":{"left":0.8871528,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":13,"bounds":{"left":0.9149306,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"bounds":{"left":0.9454861,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.87951386,"top":0.36277777,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7847222,"top":0.5338889,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9288194,"top":0.54888886,"width":0.07118058,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9065972,"top":0.54444444,"width":0.0934028,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Stefka Stoyanova to your main screen","depth":13,"bounds":{"left":0.7607639,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Stefka Stoyanova's microphone","depth":13,"bounds":{"left":0.7885417,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Stefka Stoyanova","depth":13,"bounds":{"left":0.8190972,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":17,"bounds":{"left":0.753125,"top":0.6205556,"width":0.088194445,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"2 others","depth":11,"bounds":{"left":0.87118053,"top":0.40888888,"width":0.11805555,"height":0.24444444},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2 others","depth":13,"bounds":{"left":0.909375,"top":0.55722225,"width":0.041666668,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":13,"bounds":{"left":0.82256943,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":13,"bounds":{"left":0.853125,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":13,"bounds":{"left":0.8836806,"top":0.76666665,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.753125,"top":0.87833333,"width":0.06875,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"bounds":{"left":0.96631944,"top":0.875,"width":0.018055556,"height":0.028888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"10:02","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.028472222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.08229167,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":12,"bounds":{"left":0.11736111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":15,"bounds":{"left":0.11736111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":13,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Nikolov is presenting","depth":12,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
6307468070937616918
|
-6416532982698673348
|
click
|
accessibility
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Nikolov (Presenting, annotating)
Nikolay Nikolov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Nikolay Nikolov's presentation from your main screen
You can't unmute someone else's presentation
More options for Nikolay Nikolov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Stefka Stoyanova to your main screen
Mute Stefka Stoyanova's microphone
More options for Stefka Stoyanova
Stefka Stoyanova
2 others
2 others
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
10:02
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Nikolov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
NULL
|
|
75852
|
NULL
|
0
|
2026-04-24T06:57:05.088711+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013825088_m2.jpg...
|
Firefox
|
JY-20489 | Optimize Nudges - Phase 2 by yalokin-ji JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11997/changes#diff-29e github.com/jiminny/app/pull/11997/changes#diff-29eae52080a9f4d5860d815ab8e76ac455eef3d7868b8efa7b55b02f3a017121...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.10215483,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04537899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.16356383,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.15924202,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3291987898556899501
|
-5594218748618841362
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
....
|
75850
|
|
75851
|
NULL
|
0
|
2026-04-24T06:57:05.089107+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013825089_m1.jpg...
|
Firefox
|
JY-20489 | Optimize Nudges - Phase 2 by yalokin-ji JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11997/changes#diff-29e github.com/jiminny/app/pull/11997/changes#diff-29eae52080a9f4d5860d815ab8e76ac455eef3d7868b8efa7b55b02f3a017121...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Nudge-created","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Nudge-created","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11997","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 17 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 728 additions & 20 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (17)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8875438448684710904
|
-5603753713388328210
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Nudge-created
Userpilot | Nudge-created
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17...
|
NULL
|
|
75807
|
NULL
|
0
|
2026-04-24T06:52:15.430721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013535430_m2.jpg...
|
Firefox
|
JY-20489 | Optimize Nudges - Phase 2 by yalokin-ji JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11997/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17
)
Checks (2)
Checks
(
2
)
Files changed (13)
Files changed
(
13
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
3
/
13
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component
ActivitySearch
FilterDefinition
IndexedAtFrom.php
IndexedAtFrom.php
Service
ActivitySearch.php
ActivitySearch.php
Nudge
Repository
NudgeRepository.php
NudgeRepository.php
NudgeRunFactory.php
NudgeRunFactory.php
Console
Commands
RemoveExpiredNudgesCommand.php
RemoveExpiredNudgesCommand.php
Kernel.php
Kernel.php
Models
Nudge.php
Nudge.php
VO/Repository/OnDemandActivitySearch
Criteria.php
Criteria.php
database/migrations
2026_04_21_170000_add_last_run_at_to_nudges_table.php
2026_04_21_170000_add_last_run_at_to_nudges_table.php
tests/Unit
Component
ActivitySearch/FilterDefinition
IndexedAtFromTest.php
IndexedAtFromTest.php...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.1619016,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.10215483,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.23703113,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.04637633,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.16356383,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.33519554,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.15924202,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.39106146,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"bounds":{"left":0.3159907,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"bounds":{"left":0.33061835,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"bounds":{"left":0.34391624,"top":0.0,"width":0.018949468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"bounds":{"left":0.3459109,"top":0.0,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"bounds":{"left":0.3678524,"top":0.0,"width":0.017785905,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"bounds":{"left":0.3698471,"top":0.0,"width":0.008477394,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"bounds":{"left":0.8166556,"top":0.0,"width":0.06565824,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"bounds":{"left":0.8289561,"top":0.0,"width":0.011801862,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"bounds":{"left":0.84208775,"top":0.0,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"bounds":{"left":0.84607714,"top":0.0,"width":0.021276595,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"bounds":{"left":0.8843085,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"bounds":{"left":0.89461434,"top":0.0,"width":0.008643617,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"bounds":{"left":0.9112367,"top":0.0,"width":0.01662234,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"bounds":{"left":0.9305186,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"bounds":{"left":0.9438165,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"bounds":{"left":0.95711434,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"bounds":{"left":0.97041225,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"bounds":{"left":0.9837101,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"bounds":{"left":0.3159907,"top":0.0,"width":0.025099734,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"bounds":{"left":0.32679522,"top":0.0,"width":0.011469414,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"bounds":{"left":0.34375,"top":0.0,"width":0.054521278,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"bounds":{"left":0.3543883,"top":0.0,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.3863032,"top":0.0,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"bounds":{"left":0.38929522,"top":0.0,"width":0.004986702,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.39428192,"top":0.0,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"bounds":{"left":0.40093085,"top":0.0,"width":0.029089095,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"bounds":{"left":0.4119016,"top":0.0,"width":0.014960106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"bounds":{"left":0.43267953,"top":0.0,"width":0.03025266,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"bounds":{"left":0.44381648,"top":0.0,"width":0.015957447,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"bounds":{"left":0.46559176,"top":0.0,"width":0.022938829,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"bounds":{"left":0.47639626,"top":0.0,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"bounds":{"left":0.49119017,"top":0.0,"width":0.070644945,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"bounds":{"left":0.50299203,"top":0.0,"width":0.04255319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.5493683,"top":0.0,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"bounds":{"left":0.55236036,"top":0.0,"width":0.0056515955,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.55801195,"top":0.0,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"bounds":{"left":0.56449467,"top":0.0,"width":0.031083776,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"bounds":{"left":0.5756317,"top":0.0,"width":0.016788565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.59823805,"top":0.0,"width":0.032081116,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.609375,"top":0.0,"width":0.017785905,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"bounds":{"left":0.32430187,"top":0.0,"width":0.0003324468,"height":0.016759777},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"bounds":{"left":0.32430187,"top":0.0,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"bounds":{"left":0.32430187,"top":0.0,"width":0.2159242,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"bounds":{"left":0.54022604,"top":0.0,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"bounds":{"left":0.54022604,"top":0.0,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"bounds":{"left":0.58078456,"top":0.0,"width":0.08261303,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"bounds":{"left":0.6633976,"top":0.0,"width":0.05219415,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"bounds":{"left":0.6633976,"top":0.0,"width":0.05219415,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.7155917,"top":0.0,"width":0.0013297872,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"bounds":{"left":0.98603725,"top":0.0,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title","depth":13,"bounds":{"left":0.32130983,"top":0.027533919,"width":0.2293883,"height":0.031923383},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2","depth":14,"bounds":{"left":0.32130983,"top":0.028332002,"width":0.18018617,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.5041556,"top":0.028332002,"width":0.006482713,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11997","depth":15,"bounds":{"left":0.5106383,"top":0.028332002,"width":0.028091755,"height":0.030327214},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"bounds":{"left":0.54005986,"top":0.030726258,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"bounds":{"left":0.95794547,"top":0.035514764,"width":0.031083776,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"bounds":{"left":0.96326464,"top":0.04030327,"width":0.01512633,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":13,"bounds":{"left":0.8725067,"top":0.033918597,"width":0.051861703,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":15,"bounds":{"left":0.88480717,"top":0.03990423,"width":0.03523936,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"bounds":{"left":0.92569816,"top":0.033918597,"width":0.02825798,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"bounds":{"left":0.93002,"top":0.03990423,"width":0.011635638,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"bounds":{"left":0.33194813,"top":0.07182761,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"bounds":{"left":0.35056517,"top":0.06863528,"width":0.034242023,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"bounds":{"left":0.35056517,"top":0.070231445,"width":0.034242023,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 17 commits into","depth":15,"bounds":{"left":0.38613698,"top":0.070231445,"width":0.06815159,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.45561835,"top":0.06823623,"width":0.018450798,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.45761302,"top":0.071428575,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.47539893,"top":0.070231445,"width":0.009973404,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":16,"bounds":{"left":0.4867021,"top":0.06823623,"width":0.056848403,"height":0.017557861},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":17,"bounds":{"left":0.4886968,"top":0.071428575,"width":0.05285904,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.54488033,"top":0.06584198,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 728 additions & 20 deletions","depth":14,"bounds":{"left":0.95412236,"top":0.12210695,"width":0.019946808,"height":0.11412609},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"bounds":{"left":0.32130983,"top":0.10415004,"width":0.057347074,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"bounds":{"left":0.33494017,"top":0.113727055,"width":0.02825798,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.37300533,"top":0.113727055,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"bounds":{"left":0.37599733,"top":0.113727055,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.37882313,"top":0.113727055,"width":0.0018284575,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (17)","depth":16,"bounds":{"left":0.37865692,"top":0.10415004,"width":0.050033245,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"bounds":{"left":0.39228722,"top":0.113727055,"width":0.019115692,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.42303857,"top":0.113727055,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":18,"bounds":{"left":0.42603058,"top":0.113727055,"width":0.0048204786,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.43085107,"top":0.113727055,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (2)","depth":16,"bounds":{"left":0.42869017,"top":0.10415004,"width":0.04504654,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"bounds":{"left":0.44232047,"top":0.113727055,"width":0.015957447,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.4680851,"top":0.113727055,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":18,"bounds":{"left":0.4710771,"top":0.113727055,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.4739029,"top":0.113727055,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (13)","depth":16,"bounds":{"left":0.4737367,"top":0.10415004,"width":0.06100399,"height":0.031923383},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"bounds":{"left":0.48736703,"top":0.113727055,"width":0.029753989,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.5290891,"top":0.113727055,"width":0.0029920214,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":18,"bounds":{"left":0.5320811,"top":0.113727055,"width":0.004986702,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.53706783,"top":0.113727055,"width":0.0016622341,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.32130983,"top":0.15961692,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.32130983,"top":0.16241021,"width":0.030086435,"height":0.08060654},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.32130983,"top":0.14884278,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"All commits","depth":14,"bounds":{"left":0.3332779,"top":0.14884278,"width":0.040392287,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"bounds":{"left":0.34291887,"top":0.15403032,"width":0.02244016,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":15,"bounds":{"left":0.86918217,"top":0.15403032,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.87167555,"top":0.15403032,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":15,"bounds":{"left":0.87516624,"top":0.15403032,"width":0.004488032,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.88081783,"top":0.15403032,"width":0.013131649,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.90226066,"top":0.14884278,"width":0.03856383,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"bounds":{"left":0.90525264,"top":0.15403032,"width":0.014793883,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.92004657,"top":0.15403032,"width":0.012466756,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.94348407,"top":0.14884278,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"bounds":{"left":0.96110374,"top":0.14884278,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"bounds":{"left":0.97174203,"top":0.14884278,"width":0.017287234,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"bounds":{"left":0.9800532,"top":0.15403032,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.98271275,"top":0.15403032,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.98537236,"top":0.15403032,"width":0.0014960107,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.33261302,"top":0.19832402,"width":0.06815159,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"bounds":{"left":0.40375665,"top":0.19752593,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"bounds":{"left":0.32164228,"top":0.235834,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.32164228,"top":0.2386273,"width":0.014295213,"height":0.0518755},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"bounds":{"left":0.33759972,"top":0.24181964,"width":0.008144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component","depth":21,"bounds":{"left":0.3402593,"top":0.2677574,"width":0.025099734,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ActivitySearch","depth":23,"bounds":{"left":0.34291887,"top":0.2932961,"width":0.030917553,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FilterDefinition","depth":25,"bounds":{"left":0.34557846,"top":0.31883478,"width":0.031416222,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"IndexedAtFrom.php","depth":27,"bounds":{"left":0.34823802,"top":0.34477255,"width":0.042054523,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IndexedAtFrom.php","depth":28,"bounds":{"left":0.34823802,"top":0.34477255,"width":0.042054523,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Service","depth":25,"bounds":{"left":0.34557846,"top":0.37031126,"width":0.015957447,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivitySearch.php","depth":27,"bounds":{"left":0.34823802,"top":0.39584997,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivitySearch.php","depth":28,"bounds":{"left":0.34823802,"top":0.39584997,"width":0.04055851,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nudge","depth":23,"bounds":{"left":0.34291887,"top":0.42138866,"width":0.014295213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository","depth":25,"bounds":{"left":0.34557846,"top":0.44732642,"width":0.023105053,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"NudgeRepository.php","depth":27,"bounds":{"left":0.34823802,"top":0.47286513,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NudgeRepository.php","depth":28,"bounds":{"left":0.34823802,"top":0.47286513,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"NudgeRunFactory.php","depth":25,"bounds":{"left":0.34557846,"top":0.49840382,"width":0.048038565,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NudgeRunFactory.php","depth":26,"bounds":{"left":0.34557846,"top":0.49840382,"width":0.048038565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Console","depth":21,"bounds":{"left":0.3402593,"top":0.52394253,"width":0.017453458,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commands","depth":23,"bounds":{"left":0.34291887,"top":0.5494813,"width":0.02443484,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RemoveExpiredNudgesCommand.php","depth":25,"bounds":{"left":0.34557846,"top":0.575419,"width":0.08144947,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"RemoveExpiredNudgesCommand.php","depth":26,"bounds":{"left":0.34557846,"top":0.575419,"width":0.08144947,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Kernel.php","depth":23,"bounds":{"left":0.34291887,"top":0.6009577,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Kernel.php","depth":24,"bounds":{"left":0.34291887,"top":0.6009577,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Models","depth":21,"bounds":{"left":0.3402593,"top":0.62649643,"width":0.015625,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Nudge.php","depth":23,"bounds":{"left":0.34291887,"top":0.6520351,"width":0.023936171,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nudge.php","depth":24,"bounds":{"left":0.34291887,"top":0.6520351,"width":0.023936171,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"VO/Repository/OnDemandActivitySearch","depth":21,"bounds":{"left":0.3402593,"top":0.6775738,"width":0.08693484,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Criteria.php","depth":23,"bounds":{"left":0.34291887,"top":0.7035116,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Criteria.php","depth":24,"bounds":{"left":0.34291887,"top":0.7035116,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"database/migrations","depth":19,"bounds":{"left":0.33759972,"top":0.7290503,"width":0.043716755,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2026_04_21_170000_add_last_run_at_to_nudges_table.php","depth":21,"bounds":{"left":0.3402593,"top":0.75458896,"width":0.13081782,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2026_04_21_170000_add_last_run_at_to_nudges_table.php","depth":22,"bounds":{"left":0.3402593,"top":0.75458896,"width":0.13081782,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tests/Unit","depth":19,"bounds":{"left":0.33759972,"top":0.7801277,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component","depth":21,"bounds":{"left":0.3402593,"top":0.8056664,"width":0.025099734,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ActivitySearch/FilterDefinition","depth":23,"bounds":{"left":0.34291887,"top":0.8316041,"width":0.063663565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"IndexedAtFromTest.php","depth":25,"bounds":{"left":0.34557846,"top":0.85714287,"width":0.05069814,"height":0.013567438},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IndexedAtFromTest.php","depth":26,"bounds":{"left":0.34557846,"top":0.85714287,"width":0.05069814,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7372222745045154797
|
-2055475758054348050
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17
)
Checks (2)
Checks
(
2
)
Files changed (13)
Files changed
(
13
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
3
/
13
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component
ActivitySearch
FilterDefinition
IndexedAtFrom.php
IndexedAtFrom.php
Service
ActivitySearch.php
ActivitySearch.php
Nudge
Repository
NudgeRepository.php
NudgeRepository.php
NudgeRunFactory.php
NudgeRunFactory.php
Console
Commands
RemoveExpiredNudgesCommand.php
RemoveExpiredNudgesCommand.php
Kernel.php
Kernel.php
Models
Nudge.php
Nudge.php
VO/Repository/OnDemandActivitySearch
Criteria.php
Criteria.php
database/migrations
2026_04_21_170000_add_last_run_at_to_nudges_table.php
2026_04_21_170000_add_last_run_at_to_nudges_table.php
tests/Unit
Component
ActivitySearch/FilterDefinition
IndexedAtFromTest.php
IndexedAtFromTest.php...
|
75805
|
|
75806
|
NULL
|
0
|
2026-04-24T06:52:15.495640+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013535495_m1.jpg...
|
Firefox
|
JY-20489 | Optimize Nudges - Phase 2 by yalokin-ji JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/11997/changes
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17
)
Checks (2)
Checks
(
2
)
Files changed (13)
Files changed
(
13
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
3
/
13
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component
ActivitySearch
FilterDefinition
IndexedAtFrom.php
IndexedAtFrom.php
Service
ActivitySearch.php
ActivitySearch.php
Nudge
Repository...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (31)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20489 | Optimize Nudges - Phase 2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11997","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Preview","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Preview","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 17 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 728 additions & 20 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (17)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (2)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (13)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"All commits","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All commits","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Submit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open overview panel","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open comments panel","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"(","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Filter options","depth":16,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"File tree","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Component","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ActivitySearch","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FilterDefinition","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"IndexedAtFrom.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IndexedAtFrom.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Service","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"ActivitySearch.php","depth":27,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ActivitySearch.php","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nudge","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
7793121600030037039
|
-8973035572289443090
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
JY-20489 | Optimize Nudges - Phase 2 by yalokin-jiminny · Pull Request #11997 · jiminny/app
Close tab
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (31)
Pull requests
(
31
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
JY-20489 | Optimize Nudges - Phase 2 #11997 Edit title
JY-20489 | Optimize Nudges - Phase 2
#
11997
Edit title
Preview
Preview
Checks pending
Checks pending
Code
Code
Open
yalokin-jiminny
yalokin-jiminny
wants to merge 17 commits into
master
master
from
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Copy head branch name to clipboard
Lines changed: 728 additions & 20 deletions
Conversation (5)
Conversation
(
5
)
Commits (17)
Commits
(
17
)
Checks (2)
Checks
(
2
)
Files changed (13)
Files changed
(
13
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
3
/
13
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
app
Component
ActivitySearch
FilterDefinition
IndexedAtFrom.php
IndexedAtFrom.php
Service
ActivitySearch.php
ActivitySearch.php
Nudge
Repository...
|
75804
|
|
75754
|
NULL
|
0
|
2026-04-24T06:46:58.004716+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013218004_m2.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57696
57696
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
15m 42s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
5m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876599
1m 15s
1m 15s
SUCCESS job build-frontend
build-frontend
876603
1m 27s
1m 27s
SUCCESS job test-frontend
test-frontend
876605
1m 29s
1m 29s
SUCCESS job build-backend
build-backend
876600
52s
52s
SUCCESS job phpstan
phpstan
876601
1m 19s
1m 19s
SUCCESS job setup
setup
876604
1m 20s
1m 20s
RUNNING job test
test
876606
1m 10s
1m 10s
RUNNING job test-backend-lint
test-backend-lint
876602
3m 8s
3m 8s
sonar_cloud
876607
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876589
55s
55s
app
57695
57695
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 49s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876590
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876591
1m 26s
1m 26s
SUCCESS job test-frontend
test-frontend
876592
1m 50s
1m 50s
SUCCESS job build-backend
build-backend
876593
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876595
1m 24s
1m 24s
SUCCESS job setup
setup
876594
1m 52s
1m 52s
RUNNING job test
test
876597
1m 26s
1m 26s
RUNNING job test-backend-lint
test-backend-lint
876596
3m 39s
3m 39s
sonar_cloud
876598
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876588
32s
32s
app
57694
57694
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
22m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876579
1m 26s
1m 26s
SUCCESS job build-frontend
build-frontend
876582
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876584
1m 48s
1m 48s
SUCCESS job build-backend
build-backend
876580
53s
53s
SUCCESS job phpstan
phpstan
876581
1m 6s
1m 6s
SUCCESS job setup
setup
876583
1m 31s
1m 31s
SUCCESS job test
test
876586
9m 20s
9m 20s
SUCCESS job test-backend-lint
test-backend-lint
876585
4m 15s
4m 15s
SUCCESS job sonar_cloud
sonar_cloud
876587
1m 34s
1m 34s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
23m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.07962101,"height":0.032721467},"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.2443484,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"bounds":{"left":0.2443484,"top":0.23703113,"width":0.04637633,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.16356383,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29837102,"top":0.29848364,"width":0.007978723,"height":0.01915403},"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.23387633,"top":0.3256185,"width":0.07413564,"height":0.025538707},"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.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"bounds":{"left":0.31831783,"top":0.061452515,"width":0.044215426,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"bounds":{"left":0.9371675,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"bounds":{"left":0.9517952,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"bounds":{"left":0.96642286,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"bounds":{"left":0.98105055,"top":0.061452515,"width":0.013297873,"height":0.031923383},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"bounds":{"left":0.3179854,"top":0.10295291,"width":0.01462766,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"bounds":{"left":0.3159907,"top":0.15083799,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"bounds":{"left":0.31881648,"top":0.1839585,"width":0.012965426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"bounds":{"left":0.3159907,"top":0.21308859,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"bounds":{"left":0.31499335,"top":0.2462091,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"bounds":{"left":0.3159907,"top":0.2753392,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"bounds":{"left":0.31632313,"top":0.3084597,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"bounds":{"left":0.3159907,"top":0.33798882,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"bounds":{"left":0.31648937,"top":0.37071028,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"bounds":{"left":0.3159907,"top":0.40023944,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"bounds":{"left":0.31665558,"top":0.4329609,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"bounds":{"left":0.3159907,"top":0.46249002,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"bounds":{"left":0.31632313,"top":0.49561054,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"bounds":{"left":0.3159907,"top":0.52474064,"width":0.01861702,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"bounds":{"left":0.32130983,"top":0.55786115,"width":0.007978723,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"bounds":{"left":0.3159907,"top":0.58699125,"width":0.01861702,"height":0.04668795},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"bounds":{"left":0.32064494,"top":0.6201117,"width":0.00930851,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.31831783,"top":0.9345571,"width":0.013962766,"height":0.046288908},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.31831783,"top":0.96727854,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57696","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57696","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15m 42s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0b1e5b0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.0,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.0,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.0,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876599","depth":16,"bounds":{"left":0.47772607,"top":0.0,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 15s","depth":14,"bounds":{"left":0.9027593,"top":0.0,"width":0.015458777,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 15s","depth":15,"bounds":{"left":0.9027593,"top":0.0,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.0,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.0,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876603","depth":16,"bounds":{"left":0.47623006,"top":0.0,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 27s","depth":14,"bounds":{"left":0.90242684,"top":0.0,"width":0.015791224,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 27s","depth":15,"bounds":{"left":0.90242684,"top":0.0,"width":0.015791224,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.0,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.0,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876605","depth":16,"bounds":{"left":0.4739029,"top":0.0,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.0,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.0,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.0035913808,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.0059856344,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876600","depth":16,"bounds":{"left":0.47623006,"top":0.0059856344,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"52s","depth":14,"bounds":{"left":0.9099069,"top":0.0035913808,"width":0.00831117,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"52s","depth":15,"bounds":{"left":0.9099069,"top":0.0059856344,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.029130088,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.03152434,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876601","depth":16,"bounds":{"left":0.46210107,"top":0.03152434,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"bounds":{"left":0.9025931,"top":0.029130088,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"bounds":{"left":0.9025931,"top":0.03152434,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.054668795,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.057063047,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876604","depth":16,"bounds":{"left":0.4566157,"top":0.057063047,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 20s","depth":14,"bounds":{"left":0.9019282,"top":0.054668795,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 20s","depth":15,"bounds":{"left":0.9019282,"top":0.057063047,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"bounds":{"left":0.42603058,"top":0.080207504,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":0.082601756,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876606","depth":16,"bounds":{"left":0.45262632,"top":0.082601756,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"bounds":{"left":0.9025931,"top":0.080207504,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"bounds":{"left":0.9025931,"top":0.082601756,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":0.10574621,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":0.10814046,"width":0.038896278,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876602","depth":16,"bounds":{"left":0.48287898,"top":0.10814046,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3m 8s","depth":14,"bounds":{"left":0.9040891,"top":0.10574621,"width":0.01412899,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3m 8s","depth":15,"bounds":{"left":0.9040891,"top":0.10814046,"width":0.01412899,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":0.13367917,"width":0.02642952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876607","depth":16,"bounds":{"left":0.47041222,"top":0.13367917,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.17438148,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.17597765,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.18036711,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.17917,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.17996807,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.1819633,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"bounds":{"left":0.5724734,"top":0.17278531,"width":0.059507977,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"bounds":{"left":0.5724734,"top":0.1735834,"width":0.059507977,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.1915403,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0b1e5b0","depth":16,"bounds":{"left":0.5724734,"top":0.19313647,"width":0.019614361,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"bounds":{"left":0.5724734,"top":0.19313647,"width":0.08743351,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.17996807,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.17996807,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.85056514,"top":0.17278531,"width":0.027759308,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"bounds":{"left":0.8562167,"top":0.18156424,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.90425533,"top":0.17278531,"width":0.019281914,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.17597765,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.17597765,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.17597765,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.17597765,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.17597765,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.25019953,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.24740623,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.25019953,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876589","depth":16,"bounds":{"left":0.4566157,"top":0.25019953,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"55s","depth":14,"bounds":{"left":0.9099069,"top":0.24740623,"width":0.00831117,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"55s","depth":15,"bounds":{"left":0.9099069,"top":0.25019953,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.29968077,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57695","depth":12,"bounds":{"left":0.3538896,"top":0.3160415,"width":0.01412899,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57695","depth":13,"bounds":{"left":0.3538896,"top":0.31683958,"width":0.01412899,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.30167598,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"bounds":{"left":0.42802528,"top":0.30327216,"width":0.03274601,"height":0.023144454},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"bounds":{"left":0.43866357,"top":0.30766162,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14m 49s","depth":13,"bounds":{"left":0.42802528,"top":0.3320032,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"bounds":{"left":0.44680852,"top":0.3320032,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"bounds":{"left":0.4637633,"top":0.3264166,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":0.3064645,"width":0.045711435,"height":0.015961692},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":0.30766162,"width":0.045711435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.30007982,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.3008779,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.31883478,"width":0.08128324,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ebde7ab","depth":16,"bounds":{"left":0.5724734,"top":0.32043096,"width":0.019281914,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 fix failing tests","depth":16,"bounds":{"left":0.5930851,"top":0.32043096,"width":0.0546875,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.30766162,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.30766162,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.85056514,"top":0.30007982,"width":0.027759308,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"bounds":{"left":0.8562167,"top":0.30925778,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.8959442,"top":0.30007982,"width":0.027593086,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.30327216,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.30327216,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.30327216,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.30327216,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.30327216,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.3782921,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.37589785,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.3782921,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876590","depth":16,"bounds":{"left":0.47772607,"top":0.3782921,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"bounds":{"left":0.9025931,"top":0.37589785,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"bounds":{"left":0.9025931,"top":0.3782921,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.40143654,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.4038308,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876591","depth":16,"bounds":{"left":0.47623006,"top":0.4038308,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 26s","depth":14,"bounds":{"left":0.9019282,"top":0.40143654,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 26s","depth":15,"bounds":{"left":0.9019282,"top":0.4038308,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.42697525,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.4293695,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876592","depth":16,"bounds":{"left":0.4739029,"top":0.4293695,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 50s","depth":14,"bounds":{"left":0.9019282,"top":0.42697525,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 50s","depth":15,"bounds":{"left":0.9019282,"top":0.4293695,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.45251396,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.45490822,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876593","depth":16,"bounds":{"left":0.47623006,"top":0.45490822,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"bounds":{"left":0.9025931,"top":0.45251396,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"bounds":{"left":0.9025931,"top":0.45490822,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.47805268,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.48044693,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876595","depth":16,"bounds":{"left":0.46210107,"top":0.48044693,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 24s","depth":14,"bounds":{"left":0.9019282,"top":0.47805268,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 24s","depth":15,"bounds":{"left":0.9019282,"top":0.48044693,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.50359136,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.5059856,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876594","depth":16,"bounds":{"left":0.4566157,"top":0.5059856,"width":0.017121011,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"bounds":{"left":0.9020944,"top":0.50359136,"width":0.016123671,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"bounds":{"left":0.9020944,"top":0.5059856,"width":0.016123671,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"bounds":{"left":0.42603058,"top":0.5291301,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":0.53152436,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876597","depth":16,"bounds":{"left":0.45262632,"top":0.53152436,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 26s","depth":14,"bounds":{"left":0.9019282,"top":0.5291301,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 26s","depth":15,"bounds":{"left":0.9019282,"top":0.53152436,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":0.5546688,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":0.55706304,"width":0.038896278,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876596","depth":16,"bounds":{"left":0.48287898,"top":0.55706304,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3m 39s","depth":14,"bounds":{"left":0.9009308,"top":0.5546688,"width":0.017287234,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3m 39s","depth":15,"bounds":{"left":0.9009308,"top":0.55706304,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":0.5826017,"width":0.02642952,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876598","depth":16,"bounds":{"left":0.47041222,"top":0.5826017,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.62330407,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.6249002,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.6292897,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":0.6280926,"width":0.03507314,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":0.62889063,"width":0.03507314,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":0.6308859,"width":0.011136968,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"bounds":{"left":0.5724734,"top":0.6217079,"width":0.09474734,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"bounds":{"left":0.5724734,"top":0.62250596,"width":0.09474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.6404629,"width":0.08128324,"height":0.016759777},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ebde7ab","depth":16,"bounds":{"left":0.5724734,"top":0.64166003,"width":0.019281914,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 fix failing tests","depth":16,"bounds":{"left":0.5930851,"top":0.64166003,"width":0.0546875,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.62889063,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.62889063,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.85056514,"top":0.6217079,"width":0.027759308,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"bounds":{"left":0.8562167,"top":0.63048685,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.90359044,"top":0.6217079,"width":0.019946808,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.6249002,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.6249002,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.6249002,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.6249002,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.6249002,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.68196326,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.679569,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.68196326,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876588","depth":16,"bounds":{"left":0.4566157,"top":0.68196326,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"32s","depth":14,"bounds":{"left":0.9097407,"top":0.679569,"width":0.008477394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"32s","depth":15,"bounds":{"left":0.9097407,"top":0.68196326,"width":0.008477394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"bounds":{"left":0.3538896,"top":0.73144454,"width":0.00831117,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57694","depth":12,"bounds":{"left":0.3538896,"top":0.7482043,"width":0.014295213,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57694","depth":13,"bounds":{"left":0.3538896,"top":0.7490024,"width":0.014295213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":0.7338388,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":0.73543495,"width":0.033410903,"height":0.022745412},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":0.7398244,"width":0.018783245,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"bounds":{"left":0.48287898,"top":0.7386273,"width":0.045711435,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"bounds":{"left":0.48287898,"top":0.73942536,"width":0.045711435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20735-remove-code-switching-assembly-prompt","depth":13,"bounds":{"left":0.5724734,"top":0.73224264,"width":0.11884973,"height":0.01556265},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20735-remove-code-switching-assembly-prompt","depth":14,"bounds":{"left":0.5724734,"top":0.7330407,"width":0.11884973,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":0.7509976,"width":0.12765957,"height":0.033519555},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0eacef7","depth":16,"bounds":{"left":0.5724734,"top":0.75259376,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript","depth":16,"bounds":{"left":0.5724734,"top":0.75259376,"width":0.117519945,"height":0.06424581},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":0.73942536,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":0.73942536,"width":0.034574468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.84773934,"top":0.73224264,"width":0.030585106,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22m ago","depth":15,"bounds":{"left":0.85339093,"top":0.7410216,"width":0.019281914,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.89295214,"top":0.73224264,"width":0.030585106,"height":0.031923383},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":0.73543495,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":0.73543495,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":0.73543495,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"bounds":{"left":0.96077126,"top":0.73543495,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"bounds":{"left":0.97140956,"top":0.73543495,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"bounds":{"left":0.39926863,"top":0.8096568,"width":0.010804521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"bounds":{"left":0.42603058,"top":0.80686355,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"bounds":{"left":0.44132313,"top":0.8096568,"width":0.03374335,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876579","depth":16,"bounds":{"left":0.47772607,"top":0.8096568,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 26s","depth":14,"bounds":{"left":0.9019282,"top":0.80686355,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 26s","depth":15,"bounds":{"left":0.9019282,"top":0.8096568,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.8324022,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.83519554,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876582","depth":16,"bounds":{"left":0.47623006,"top":0.83519554,"width":0.016788565,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"bounds":{"left":0.9019282,"top":0.8324022,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"bounds":{"left":0.9019282,"top":0.83519554,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"bounds":{"left":0.42603058,"top":0.8579409,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"bounds":{"left":0.44132313,"top":0.8607342,"width":0.029920213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876584","depth":16,"bounds":{"left":0.4739029,"top":0.8607342,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"bounds":{"left":0.90176195,"top":0.8579409,"width":0.016456118,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"bounds":{"left":0.90176195,"top":0.8607342,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"bounds":{"left":0.42603058,"top":0.88347965,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"bounds":{"left":0.44132313,"top":0.88627297,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876580","depth":16,"bounds":{"left":0.47623006,"top":0.88627297,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"53s","depth":14,"bounds":{"left":0.9097407,"top":0.88347965,"width":0.008477394,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"53s","depth":15,"bounds":{"left":0.9097407,"top":0.88627297,"width":0.008477394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"bounds":{"left":0.42603058,"top":0.90901834,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"bounds":{"left":0.44132313,"top":0.91181165,"width":0.018118352,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876581","depth":16,"bounds":{"left":0.46210107,"top":0.91181165,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 6s","depth":14,"bounds":{"left":0.9049202,"top":0.90901834,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 6s","depth":15,"bounds":{"left":0.9049202,"top":0.91181165,"width":0.013297873,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.42603058,"top":0.9345571,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.44132313,"top":0.93735033,"width":0.012632979,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876583","depth":16,"bounds":{"left":0.4566157,"top":0.93735033,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 31s","depth":14,"bounds":{"left":0.9025931,"top":0.9345571,"width":0.015625,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 31s","depth":15,"bounds":{"left":0.9025931,"top":0.93735033,"width":0.015625,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"bounds":{"left":0.42603058,"top":0.96009576,"width":0.3254654,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.44132313,"top":0.9628891,"width":0.008643617,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876586","depth":16,"bounds":{"left":0.45262632,"top":0.9628891,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"9m 20s","depth":14,"bounds":{"left":0.9012633,"top":0.96009576,"width":0.016954787,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9m 20s","depth":15,"bounds":{"left":0.9012633,"top":0.9628891,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"bounds":{"left":0.42603058,"top":0.9856345,"width":0.3254654,"height":0.014365494},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.44132313,"top":0.98842776,"width":0.038896278,"height":0.011572242},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876585","depth":16,"bounds":{"left":0.48287898,"top":0.98842776,"width":0.016788565,"height":0.011572242},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 15s","depth":14,"bounds":{"left":0.9019282,"top":0.9856345,"width":0.016289894,"height":0.014365494},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 15s","depth":15,"bounds":{"left":0.9019282,"top":0.98842776,"width":0.016289894,"height":0.011572242},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job sonar_cloud","depth":14,"bounds":{"left":0.42603058,"top":1.0,"width":0.3254654,"height":-0.011173129},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.44132313,"top":1.0,"width":0.026928192,"height":-0.013966441},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876587","depth":16,"bounds":{"left":0.4709109,"top":1.0,"width":0.016788565,"height":-0.013966441},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 34s","depth":14,"bounds":{"left":0.90176195,"top":1.0,"width":0.016456118,"height":-0.011173129},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 34s","depth":15,"bounds":{"left":0.90176195,"top":1.0,"width":0.016456118,"height":-0.013966441},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"bounds":{"left":0.41605717,"top":1.0,"width":0.010638298,"height":-0.05426979},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"bounds":{"left":0.42802528,"top":1.0,"width":0.033410903,"height":-0.055865884},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"bounds":{"left":0.43866357,"top":1.0,"width":0.018783245,"height":-0.06025541},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"bounds":{"left":0.48287898,"top":1.0,"width":0.03507314,"height":-0.05905831},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"bounds":{"left":0.48287898,"top":1.0,"width":0.03507314,"height":-0.06025541},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"bounds":{"left":0.52327126,"top":1.0,"width":0.011136968,"height":-0.062250614},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20735-remove-code-switching-assembly-prompt","depth":13,"bounds":{"left":0.5724734,"top":1.0,"width":0.11884973,"height":-0.05267358},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20735-remove-code-switching-assembly-prompt","depth":14,"bounds":{"left":0.5724734,"top":1.0,"width":0.11884973,"height":-0.053471684},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"bounds":{"left":0.5724734,"top":1.0,"width":0.12765957,"height":-0.07142854},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0eacef7","depth":16,"bounds":{"left":0.5724734,"top":1.0,"width":0.018118352,"height":-0.07302475},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript","depth":16,"bounds":{"left":0.5724734,"top":1.0,"width":0.117519945,"height":-0.07302475},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"bounds":{"left":0.71875,"top":1.0,"width":0.011303191,"height":-0.06025541},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"bounds":{"left":0.73138297,"top":1.0,"width":0.034574468,"height":-0.06025541},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"bounds":{"left":0.84757316,"top":1.0,"width":0.030751329,"height":-0.05267358},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"23m ago","depth":15,"bounds":{"left":0.85322475,"top":1.0,"width":0.019448139,"height":-0.0618515},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"bounds":{"left":0.9037567,"top":1.0,"width":0.019780586,"height":-0.05267358},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"bounds":{"left":0.9288564,"top":1.0,"width":0.010638298,"height":-0.055865884},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"bounds":{"left":0.93949467,"top":1.0,"width":0.010638298,"height":-0.055865884},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"bounds":{"left":0.95013297,"top":1.0,"width":0.010638298,"height":-0.055865884},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false}]...
|
5970100254294095470
|
-8285518832172636495
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57696
57696
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
15m 42s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
5m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876599
1m 15s
1m 15s
SUCCESS job build-frontend
build-frontend
876603
1m 27s
1m 27s
SUCCESS job test-frontend
test-frontend
876605
1m 29s
1m 29s
SUCCESS job build-backend
build-backend
876600
52s
52s
SUCCESS job phpstan
phpstan
876601
1m 19s
1m 19s
SUCCESS job setup
setup
876604
1m 20s
1m 20s
RUNNING job test
test
876606
1m 10s
1m 10s
RUNNING job test-backend-lint
test-backend-lint
876602
3m 8s
3m 8s
sonar_cloud
876607
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876589
55s
55s
app
57695
57695
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 49s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876590
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876591
1m 26s
1m 26s
SUCCESS job test-frontend
test-frontend
876592
1m 50s
1m 50s
SUCCESS job build-backend
build-backend
876593
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876595
1m 24s
1m 24s
SUCCESS job setup
setup
876594
1m 52s
1m 52s
RUNNING job test
test
876597
1m 26s
1m 26s
RUNNING job test-backend-lint
test-backend-lint
876596
3m 39s
3m 39s
sonar_cloud
876598
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876588
32s
32s
app
57694
57694
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
22m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876579
1m 26s
1m 26s
SUCCESS job build-frontend
build-frontend
876582
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876584
1m 48s
1m 48s
SUCCESS job build-backend
build-backend
876580
53s
53s
SUCCESS job phpstan
phpstan
876581
1m 6s
1m 6s
SUCCESS job setup
setup
876583
1m 31s
1m 31s
SUCCESS job test
test
876586
9m 20s
9m 20s
SUCCESS job test-backend-lint
test-backend-lint
876585
4m 15s
4m 15s
SUCCESS job sonar_cloud
sonar_cloud
876587
1m 34s
1m 34s
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
23m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow...
|
75752
|
|
75753
|
NULL
|
0
|
2026-04-24T06:46:57.618469+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777013217618_m1.jpg...
|
Firefox
|
Pipelines - jiminny/app — Work
|
True
|
app.circleci.com/pipelines/github/jiminny/app
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57696
57696
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
15m 42s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
5m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876599
1m 15s
1m 15s
SUCCESS job build-frontend
build-frontend
876603
1m 27s
1m 27s
SUCCESS job test-frontend
test-frontend
876605
1m 29s
1m 29s
SUCCESS job build-backend
build-backend
876600
52s
52s
SUCCESS job phpstan
phpstan
876601
1m 19s
1m 19s
SUCCESS job setup
setup
876604
1m 20s
1m 20s
RUNNING job test
test
876606
1m 9s
1m 9s
RUNNING job test-backend-lint
test-backend-lint
876602
3m 7s
3m 7s
sonar_cloud
876607
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876589
55s
55s
app
57695
57695
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 49s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876590
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876591
1m 26s
1m 26s
SUCCESS job test-frontend
test-frontend
876592
1m 50s
1m 50s
SUCCESS job build-backend
build-backend
876593
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876595
1m 24s
1m 24s
SUCCESS job setup
setup
876594
1m 52s
1m 52s
RUNNING job test
test
876597
1m 25s
1m 25s
RUNNING job test-backend-lint
test-backend-lint
876596
3m 38s
3m 38s
sonar_cloud
876598
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876588
32s
32s
app
57694
57694
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
22m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876579
1m 26s
1m 26s
SUCCESS job build-frontend
build-frontend
876582
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876584
1m 48s
1m 48s
SUCCESS job build-backend
build-backend
876580
53s
53s
SUCCESS job phpstan
phpstan
876581
1m 6s
1m 6s
SUCCESS job setup
setup
876583
1m 31s
1m 31s
SUCCESS job test
test
876586
9m 20s
9m 20s
SUCCESS job test-backend-lint
test-backend-lint
876585
4m 15s
4m 15s
SUCCESS job sonar_cloud
sonar_cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.0,"top":0.0,"width":0.022222223,"height":0.035555556},"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.016666668,"top":0.0,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Go to home page","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Auto theme","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open notifications","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open support menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Open user menu","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"org avatar Current organization: jiminny","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Home","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Home","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pipelines","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Runners","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Runners","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Org","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Org","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Plan","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Plan","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chunk","depth":10,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.064444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Chunk","depth":12,"bounds":{"left":0.10034722,"top":0.0,"width":0.029166667,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Dashboard All Pipelines","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All Pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Outline app","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"app","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Overview","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Overview","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deploys","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deploys","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lightning Manage triggers","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Manage triggers","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Trigger Pipeline","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pipelines All pipelines my-pipelines-filter","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All pipelines","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"app Project Filter. Selected \"app\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"All branches Branch Filter. Selected \"All branches\"","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All branches","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start Time Cutoff date Arrow Drop Down","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cutoff date","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"All statuses Arrow Drop Down","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"statuses","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filter Display options","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Display options","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pipeline","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Workflow","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Checkout source","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trigger event","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Start","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57696","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57696","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15m 42s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0b1e5b0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876599","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876603","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 27s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 27s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876605","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876600","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876601","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876604","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 20s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 20s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876606","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 9s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 9s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876602","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3m 7s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3m 7s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876607","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489-hudges-phase2","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489-hudges-phase2","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0b1e5b0","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20723 | add strict types to RemoveExpiredNudgesCommand","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876589","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"55s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"55s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57695","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57695","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Running Running","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Running","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14m 49s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"remain","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Info Outline","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ebde7ab","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 fix failing tests","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876590","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 19s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 19s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876591","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 26s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 26s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876592","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 50s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 50s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876593","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 10s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 10s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876595","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 24s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 24s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876594","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 52s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 52s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876597","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 25s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 25s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"RUNNING job test-backend-lint","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876596","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3m 38s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3m 38s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876598","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow setup-workflow. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"setup-workflow","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup-workflow","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SETUP","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157-AJ-report-not-send-notification","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157-AJ-report-not-send-notification","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ebde7ab","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20157 fix failing tests","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876588","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"32s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"32s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"57694","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"57694","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Status Passed Success","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"build_accept_deploy","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build_accept_deploy","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20735-remove-code-switching-assembly-prompt","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20735-remove-code-switching-assembly-prompt","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Open commit on version control site","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0eacef7","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Push","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Commit pushed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"22m ago","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy timestamp duration to clipboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from start","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Rerun workflow from failed","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Fix workflow","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More Actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jobs","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job checkout-code","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"checkout-code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876579","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 26s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 26s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876582","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 29s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 29s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-frontend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-frontend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876584","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 48s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 48s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job build-backend","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"build-backend","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876580","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"53s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"53s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job phpstan","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"phpstan","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876581","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 6s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 6s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job setup","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"setup","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.02638889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876583","depth":16,"bounds":{"left":0.38923612,"top":0.0,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1m 31s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1m 31s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.018055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876586","depth":16,"bounds":{"left":0.38090277,"top":0.0,"width":0.035416666,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"9m 20s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9m 20s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job test-backend-lint","depth":14,"bounds":{"left":0.32534721,"top":0.0,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"test-backend-lint","depth":15,"bounds":{"left":0.35729167,"top":0.0,"width":0.08125,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"876585","depth":16,"bounds":{"left":0.44409722,"top":0.0,"width":0.035069443,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4m 15s","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4m 15s","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SUCCESS job sonar_cloud","depth":14,"bounds":{"left":0.32534721,"top":0.015555556,"width":0.6746528,"height":0.026666667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"sonar_cloud","depth":15,"bounds":{"left":0.35729167,"top":0.019444445,"width":0.05625,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8626246627631702290
|
-8285518854721210703
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Logged-activity
Userpilot | Logged-activity
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
JY-20157 add not enough activities notification by LakyLak · Pull Request #12011 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Go to home page
Auto theme
Open notifications
Open support menu
Open user menu
org avatar Current organization: jiminny
Home
Home
Pipelines
Pipelines
Projects
Projects
Deploys
Deploys
Insights
Insights
Runners
Runners
Org
Org
Plan
Plan
Chunk
Chunk
Dashboard All Pipelines
All Pipelines
Project Outline app
app
app
app
Overview
Overview
Settings
Settings
Deploys
Deploys
Lightning Manage triggers
Manage triggers
Trigger Pipeline
Pipelines All pipelines my-pipelines-filter
All pipelines
app Project Filter. Selected "app"
app
All branches Branch Filter. Selected "All branches"
All branches
Start Time Cutoff date Arrow Drop Down
Cutoff date
All statuses Arrow Drop Down
All
statuses
Filter Display options
Display options
Pipeline
Status
Workflow
Checkout source
Trigger event
Start
Duration
Actions
app
57696
57696
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
15m 42s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
5m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876599
1m 15s
1m 15s
SUCCESS job build-frontend
build-frontend
876603
1m 27s
1m 27s
SUCCESS job test-frontend
test-frontend
876605
1m 29s
1m 29s
SUCCESS job build-backend
build-backend
876600
52s
52s
SUCCESS job phpstan
phpstan
876601
1m 19s
1m 19s
SUCCESS job setup
setup
876604
1m 20s
1m 20s
RUNNING job test
test
876606
1m 9s
1m 9s
RUNNING job test-backend-lint
test-backend-lint
876602
3m 7s
3m 7s
sonar_cloud
876607
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20489-hudges-phase2
JY-20489-hudges-phase2
Open commit on version control site
0b1e5b0
JY-20723 | add strict types to RemoveExpiredNudgesCommand
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876589
55s
55s
app
57695
57695
RUNNING workflow build_accept_deploy. Collapse the workflow jobs list.
Status Running Running
Running
14m 49s
remain
Info Outline
build_accept_deploy
build_accept_deploy
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876590
1m 19s
1m 19s
SUCCESS job build-frontend
build-frontend
876591
1m 26s
1m 26s
SUCCESS job test-frontend
test-frontend
876592
1m 50s
1m 50s
SUCCESS job build-backend
build-backend
876593
1m 10s
1m 10s
SUCCESS job phpstan
phpstan
876595
1m 24s
1m 24s
SUCCESS job setup
setup
876594
1m 52s
1m 52s
RUNNING job test
test
876597
1m 25s
1m 25s
RUNNING job test-backend-lint
test-backend-lint
876596
3m 38s
3m 38s
sonar_cloud
876598
SUCCESS workflow setup-workflow. Collapse the workflow jobs list.
Status Passed Success
Success
setup-workflow
setup-workflow
SETUP
JY-20157-AJ-report-not-send-notification
JY-20157-AJ-report-not-send-notification
Open commit on version control site
ebde7ab
JY-20157 fix failing tests
Push
Commit pushed
Copy timestamp to clipboard
6m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job setup
setup
876588
32s
32s
app
57694
57694
SUCCESS workflow build_accept_deploy. Collapse the workflow jobs list.
Status Passed Success
Success
build_accept_deploy
build_accept_deploy
JY-20735-remove-code-switching-assembly-prompt
JY-20735-remove-code-switching-assembly-prompt
Open commit on version control site
0eacef7
JY-20735 Removed code switching part of Assembly Transcription prompt to prevent messages like (Speaking in Spanish), (Speaking in Japanese) in the transcript
Push
Commit pushed
Copy timestamp to clipboard
22m ago
Copy timestamp duration to clipboard
Rerun workflow from start
Rerun workflow from failed
Cancel workflow
Fix workflow
More Actions
Jobs
SUCCESS job checkout-code
checkout-code
876579
1m 26s
1m 26s
SUCCESS job build-frontend
build-frontend
876582
1m 29s
1m 29s
SUCCESS job test-frontend
test-frontend
876584
1m 48s
1m 48s
SUCCESS job build-backend
build-backend
876580
53s
53s
SUCCESS job phpstan
phpstan
876581
1m 6s
1m 6s
SUCCESS job setup
setup
876583
1m 31s
1m 31s
SUCCESS job test
test
876586
9m 20s
9m 20s
SUCCESS job test-backend-lint
test-backend-lint
876585
4m 15s
4m 15s
SUCCESS job sonar_cloud
sonar_cloud...
|
75751
|
|
75629
|
NULL
|
0
|
2026-04-24T06:41:48.784150+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012908784_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceReportGeneratio faVsco.js – AutomatedReportsServiceReportGenerationTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
2 files committed
JY-20157 fix failing tests
text/ 2 files committed
JY-20157 fix failing tests
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceReportGen…tionTest
Run 'AutomatedReportsServiceReportGenerationTest'
Debug 'AutomatedReportsServiceReportGenerationTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
46
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use InvalidArgumentException;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceReportGenerationTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Webhook $webhookService;
private AutomatedReportsRepository $automatedReportsRepository;
private TeamRepository $teamRepository;
protected function setUp(): void
{
parent::setUp();
// Create mocks for dependencies
$this->teamRepository = $this->createMock(TeamRepository::class);
$teamRepository = $this->teamRepository;
$groupRepository = $this->createMock(GroupRepository::class);
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$this->automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$this->webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$this->automatedReportsRepository,
$this->webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
/**
* Test getGenerateReportPayload method with one-off frequency
*/
public function testGetGenerateReportPayloadWithOneOffFrequency(): void
{
$reportUuid = 'report-uuid';
$resultUuid = 'result-uuid';
$callbackUrl = '[URL_WITH_CREDENTIALS] @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"2 files committed","depth":2,"bounds":{"left":0.8753325,"top":0.91300875,"width":0.100398935,"height":0.013567438},"role_description":"text"},{"role":"AXTextField","text":"JY-20157 fix failing tests","depth":3,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.11037234,"height":0.013567438},"value":"JY-20157 fix failing tests","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.92897046,"width":0.050531916,"height":0.013567438},"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Edit Commit Message…","depth":2,"bounds":{"left":0.8753325,"top":0.9481245,"width":0.048204787,"height":0.013567438},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.7915558,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceReportGen…tionTest","depth":6,"bounds":{"left":0.8068484,"top":0.019952115,"width":0.1087101,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceReportGenerationTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceReportGenerationTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"46","depth":4,"bounds":{"left":0.5934175,"top":0.34796488,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.60538566,"top":0.3463687,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61269945,"top":0.3463687,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceReportGenerationTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Webhook $webhookService;\n private AutomatedReportsRepository $automatedReportsRepository;\n private TeamRepository $teamRepository;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create mocks for dependencies\n $this->teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository = $this->teamRepository;\n $groupRepository = $this->createMock(GroupRepository::class);\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $this->automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $this->webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $this->automatedReportsRepository,\n $this->webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n /**\n * Test getGenerateReportPayload method with one-off frequency\n */\n public function testGetGenerateReportPayloadWithOneOffFrequency(): void\n {\n $reportUuid = 'report-uuid';\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([101, 102]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2023-01-01'));\n $report->method('getTo')->willReturn(Carbon::parse('2023-01-31'));\n $report->method('getDealAtCallStages')->willReturn([201, 202]);\n $report->method('getCurrentDealStages')->willReturn([301, 302]);\n $report->method('getDealValueMin')->willReturn(1000);\n $report->method('getDealValueMax')->willReturn(5000);\n $report->method('getCallTypes')->willReturn(['conference', 'dialer']);\n $report->method('getCallDurationMin')->willReturn(600);\n $report->method('getCallDurationMax')->willReturn(1800);\n $report->method('getAdditionalPromptInput')->willReturn('Focus on sales performance');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getPlaybookCategories')->willReturn(['category1', 'category2']);\n $report->method('getCustomName')->willReturn('My Custom Report');\n\n $result = $this->createMock(AutomatedReportResult::class);\n $result->method('getFromDate')->willReturn(Carbon::parse('2023-01-01'));\n $result->method('getToDate')->willReturn(Carbon::parse('2023-01-31'));\n $result->method('getReport')->willReturn($report);\n\n $this->automatedReportsRepository->method('findResultByUuid')->willReturn($result);\n\n // Set up webhook service to return callback URL\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n // Call the method\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n // Verify result\n $this->assertEquals(1, $result['team_id']);\n $this->assertEquals([101, 102], $result['group_ids']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals('2023-01-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2023-01-31T23:59:59+00:00', $result['to_date']);\n $this->assertEquals([201, 202], $result['call_deal_stage']);\n $this->assertEquals([301, 302], $result['current_deal_stage']);\n $this->assertEquals(1000, $result['deal_min_value']);\n $this->assertEquals(5000, $result['deal_max_value']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals(600, $result['call_duration_min_seconds']);\n $this->assertEquals(1800, $result['call_duration_max_seconds']);\n $this->assertEquals('Focus on sales performance', $result['special_requirements']);\n $this->assertEquals($resultUuid, $result['request_id']);\n $this->assertEquals($callbackUrl, $result['callback_url']);\n $this->assertEquals('1 - 31 Jan 2023', $result['report_period']);\n $this->assertEquals(['category1', 'category2'], $result['playbook_categories']);\n $this->assertEquals('My Custom Report', $result['custom_name']);\n }\n\n /**\n * Test calculateFromAndToDate method with one-off frequency\n */\n public function testCalculateFromAndToDateWithOneOffFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2023-01-01'));\n $report->method('getTo')->willReturn(Carbon::parse('2023-01-31'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-01-01', $result['fromDate']->format('Y-m-d'));\n $this->assertEquals('2023-01-31', $result['toDate']->format('Y-m-d'));\n }\n\n /**\n * Test calculateFromAndToDate method with weekly frequency\n */\n public function testCalculateFromAndToDateWithWeeklyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-02-05 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2023-02-11 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with monthly frequency\n */\n public function testCalculateFromAndToDateWithMonthlyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-01-01 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2023-01-31 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with quarterly frequency\n */\n public function testCalculateFromAndToDateWithQuarterlyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_QUARTERLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2022-10-01 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2022-12-31 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with invalid frequency\n */\n public function testCalculateFromAndToDateWithInvalidFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn('invalid_frequency');\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Unsupported frequency: invalid_frequency');\n\n // Access private method using reflection\n self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n }\n\n /**\n * Test getCallbackUrl method\n */\n public function testGetCallbackUrl(): void\n {\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n // Set up webhook service to return callback URL\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('getCallbackUrl', $this->service, []);\n\n // Verify result\n $this->assertEquals($callbackUrl, $result);\n }\n\n /**\n * Test validateDealValues method\n */\n public function testValidateDealValues(): void\n {\n $data = [\n 'min_deal_value' => 1000,\n 'max_deal_value' => 5000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1000, $result['deal_value_min']);\n $this->assertEquals(5000, $result['deal_value_max']);\n }\n\n /**\n * Test validateDealValues method with min value only\n */\n public function testValidateDealValuesWithMinValueOnly(): void\n {\n $data = [\n 'min_deal_value' => 1000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1000, $result['deal_value_min']);\n $this->assertArrayNotHasKey('deal_value_max', $result);\n }\n\n /**\n * Test validateDealValues method with max value only\n */\n public function testValidateDealValuesWithMaxValueOnly(): void\n {\n $data = [\n 'max_deal_value' => 5000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(5000, $result['deal_value_max']);\n $this->assertArrayNotHasKey('deal_value_min', $result);\n }\n\n /**\n * Test validateDealValues method with min value too large\n */\n public function testValidateDealValuesWithMinValueTooLarge(): void\n {\n $data = [\n 'min_deal_value' => 5000000000, // Larger than 4294967295 (max uint)\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with max value too large\n */\n public function testValidateDealValuesWithMaxValueTooLarge(): void\n {\n $data = [\n 'max_deal_value' => 5000000000, // Larger than 4294967295 (max uint)\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Max deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with min value negative\n */\n public function testValidateDealValuesWithMinValueNegative(): void\n {\n $data = [\n 'min_deal_value' => -1000,\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with min value greater than max value\n */\n public function testValidateDealValuesWithMinValueGreaterThanMaxValue(): void\n {\n $data = [\n 'min_deal_value' => 5000,\n 'max_deal_value' => 1000,\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value cannot be greater than max deal value');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDateRange method with one-off frequency\n */\n public function testValidateDateRangeWithOneOffFrequency(): void\n {\n // Create a stub for the parseDate method using the TestPrivateMethod trait\n $parseDateStub = static function ($dateString) {\n if ($dateString === '2023-01-01') {\n return '2023-01-01 00:00:00';\n }\n\n if ($dateString === '2023-01-31') {\n return '2023-01-31 00:00:00';\n }\n\n return null;\n };\n\n // Set up test data\n $data = [\n 'start_date_period' => '2023-01-01',\n 'end_date_period' => '2023-01-31',\n ];\n\n // Manually perform the operations that validateDateRange would do\n // This avoids the need to mock private methods\n $result = [\n 'from' => $parseDateStub($data['start_date_period']),\n 'to' => $parseDateStub($data['end_date_period']),\n ];\n\n // Verify result\n $this->assertEquals('2023-01-01 00:00:00', $result['from']);\n $this->assertEquals('2023-01-31 00:00:00', $result['to']);\n }\n\n /**\n * Test validateDateRange method with one-off frequency and missing dates\n */\n public function testValidateDateRangeWithOneOffFrequencyAndMissingDates(): void\n {\n $data = [];\n $reportData = [];\n $frequency = 'one_off';\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Start date and end date are required for one_off frequency');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDateRange', $this->service, [$data, $reportData, $frequency]);\n }\n\n /**\n * Test validateDateRange method with non-one-off frequency\n */\n public function testValidateDateRangeWithNonOneOffFrequency(): void\n {\n $data = [\n 'start_date_period' => '2023-01-01',\n 'end_date_period' => '2023-01-31',\n ];\n\n $reportData = [];\n $frequency = 'weekly';\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDateRange', $this->service, [$data, $reportData, $frequency]);\n\n // Verify result\n $this->assertNull($result['from']);\n $this->assertNull($result['to']);\n }\n\n /**\n * Test validateCallDurations method\n */\n public function testValidateCallDurations(): void\n {\n $data = [\n 'min_call_duration' => 10,\n 'max_call_duration' => 30,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result (minutes converted to seconds)\n $this->assertEquals(600, $result['call_duration_min']);\n $this->assertEquals(1800, $result['call_duration_max']);\n }\n\n /**\n * Test validateCallDurations method with min duration only\n */\n public function testValidateCallDurationsWithMinDurationOnly(): void\n {\n $data = [\n 'min_call_duration' => 10,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(600, $result['call_duration_min']);\n $this->assertArrayNotHasKey('call_duration_max', $result);\n }\n\n /**\n * Test validateCallDurations method with max duration only\n */\n public function testValidateCallDurationsWithMaxDurationOnly(): void\n {\n $data = [\n 'max_call_duration' => 30,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1800, $result['call_duration_max']);\n $this->assertArrayNotHasKey('call_duration_min', $result);\n }\n\n /**\n * Test validateCallDurations method with min duration too large\n */\n public function testValidateCallDurationsWithMinDurationTooLarge(): void\n {\n $data = [\n 'min_call_duration' => 100000000, // Too large when converted to seconds\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min call duration should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateCallTypes method\n */\n public function testValidateCallTypes(): void\n {\n $data = [\n 'call_type' => ['conference'],\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(['conference'], $result['call_types']);\n }\n\n /**\n * Test validateCallTypes method with empty call types\n */\n public function testValidateCallTypesWithEmptyCallTypes(): void\n {\n $data = [];\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n\n // Verify the result (should default to all call types)\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n }\n\n /**\n * Test validateCallTypes method with an invalid call type\n */\n public function testValidateCallTypesWithInvalidCallType(): void\n {\n $data = [\n 'call_type' => ['invalid_call_type'],\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Call type invalid_call_type is invalid');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n }\n\n private function getService($dispatcher): AutomatedReportsService\n {\n return new AutomatedReportsService(\n $this->createMock(TeamRepository::class),\n $this->createMock(GroupRepository::class),\n $this->createMock(UserRepository::class),\n $this->createMock(StageRepository::class),\n $this->createMock(DealStagesService::class),\n $this->createMock(RecipientsService::class),\n $this->createMock(AutomatedReportsRepository::class),\n $this->createMock(Webhook::class),\n $dispatcher,\n $this->createMock(ActivityTypeService::class),\n $this->createMock(PlaybookCategoryRepository::class),\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n /**\n * Test generateOneOffReport method when status is false\n */\n public function testGenerateOneOffReportWithInactiveStatus(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with inactive status\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n // Dispatcher should not be called\n $dispatcher->expects($this->never())\n ->method('dispatch');\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n /**\n * Test generateOneOffReport method when frequency is not one-off\n */\n public function testGenerateOneOffReportWithNonOneOffFrequency(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with active status but non-one-off frequency\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(true);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n\n // Dispatcher should not be called\n $dispatcher->expects($this->never())\n ->method('dispatch');\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n /**\n * Test generateOneOffReport method when conditions are met\n */\n public function testGenerateOneOffReportWithValidConditions(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with active status and one-off frequency\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(true);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getUuid')->willReturn('test-uuid');\n\n // Dispatcher should be called once with RequestGenerateReportJob\n $dispatcher->expects($this->once())\n ->method('dispatch')\n ->with($this->callback(function ($job) {\n return $job instanceof \\Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob\n && $job->uniqueId() === 'test-uuid';\n }));\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n public function testCreateReportResult(): void\n {\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getId')->willReturn(1);\n\n $expectedResult = $this->createMock(AutomatedReportResult::class);\n\n $this->automatedReportsRepository->expects($this->once())\n ->method('createResult')\n ->with([\n 'report_id' => 1,\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => 'pdf',\n ])\n ->willReturn($expectedResult);\n\n $result = $this->service->createReportResult($report, ['media_type' => 'pdf']);\n\n $this->assertSame($expectedResult, $result);\n }\n\n public function testFindChildResult(): void\n {\n $parentResult = $this->createMock(AutomatedReportResult::class);\n $childResult = $this->createMock(AutomatedReportResult::class);\n $type = AutomatedReportsService::MEDIA_TYPE_PODCAST;\n\n $this->automatedReportsRepository->expects($this->once())\n ->method('findChildResult')\n ->with($parentResult, $type)\n ->willReturn($childResult);\n\n $result = $this->service->findChildResult($parentResult, $type);\n\n $this->assertSame($childResult, $result);\n }\n\n public function testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 14:30:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2026-01-11T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2026-01-17T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 05:00:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2025-12-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-12-31T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 05:00:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_QUARTERLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2025-10-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-12-31T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadOneOffIncludesCallsOnFinalDay(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2026-01-01 00:00:00'));\n $report->method('getTo')->willReturn(Carbon::parse('2026-01-20 00:00:00'));\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2026-01-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2026-01-20T23:59:59+00:00', $result['to_date']);\n }\n\n public function testUpdateResultNamesIsCalledWhenCustomNameChanges(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Old Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn('New Name');\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $result1 = $this->createMock(AutomatedReportResult::class);\n $result1->method('getReport')->willReturn($updatedReport);\n $result1->method('getFromDate')->willReturn(Carbon::parse('2025-05-01'));\n $result1->method('getToDate')->willReturn(Carbon::parse('2025-05-31'));\n $result1->method('getGroups')->willReturn([]);\n $result1->method('getMediaType')->willReturn(AutomatedReportsService::MEDIA_TYPE_PDF);\n $result1->expects($this->once())\n ->method('update')\n ->with(['name' => 'New Name - May 2025']);\n\n $results = new \\Illuminate\\Database\\Eloquent\\Collection([$result1]);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->once())\n ->method('getResultsByReport')\n ->with($updatedReport)\n ->willReturn($results);\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n public function testUpdateResultNamesIsNotCalledWhenCustomNameUnchanged(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Same Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn('Same Name');\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->never())\n ->method('getResultsByReport');\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n public function testUpdateResultNamesRollbackToNoCustomNameIncludesTeams(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Old Custom Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn(null);\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $result1 = $this->createMock(AutomatedReportResult::class);\n $result1->method('getReport')->willReturn($updatedReport);\n $result1->method('getFromDate')->willReturn(Carbon::parse('2025-05-01'));\n $result1->method('getToDate')->willReturn(Carbon::parse('2025-05-31'));\n $result1->method('getGroups')->willReturn([]);\n $result1->method('getMediaType')->willReturn(AutomatedReportsService::MEDIA_TYPE_PDF);\n $result1->expects($this->once())\n ->method('update')\n ->with(['name' => 'Exec Summary - May 2025 - All']);\n\n $results = new \\Illuminate\\Database\\Eloquent\\Collection([$result1]);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->once())\n ->method('getResultsByReport')\n ->with($updatedReport)\n ->willReturn($results);\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n private function buildMinimalUpdatePayload(): array\n {\n return [\n 'organization' => 'team-uuid',\n 'report_type' => 'exec_summary',\n 'report_enabled' => false,\n 'frequency' => AutomatedReportsService::FREQUENCY_MONTHLY,\n 'media_types' => [AutomatedReportsService::MEDIA_TYPE_PDF],\n ];\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceReportGenerationTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Webhook $webhookService;\n private AutomatedReportsRepository $automatedReportsRepository;\n private TeamRepository $teamRepository;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create mocks for dependencies\n $this->teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository = $this->teamRepository;\n $groupRepository = $this->createMock(GroupRepository::class);\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $this->automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $this->webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $this->automatedReportsRepository,\n $this->webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n /**\n * Test getGenerateReportPayload method with one-off frequency\n */\n public function testGetGenerateReportPayloadWithOneOffFrequency(): void\n {\n $reportUuid = 'report-uuid';\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([101, 102]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2023-01-01'));\n $report->method('getTo')->willReturn(Carbon::parse('2023-01-31'));\n $report->method('getDealAtCallStages')->willReturn([201, 202]);\n $report->method('getCurrentDealStages')->willReturn([301, 302]);\n $report->method('getDealValueMin')->willReturn(1000);\n $report->method('getDealValueMax')->willReturn(5000);\n $report->method('getCallTypes')->willReturn(['conference', 'dialer']);\n $report->method('getCallDurationMin')->willReturn(600);\n $report->method('getCallDurationMax')->willReturn(1800);\n $report->method('getAdditionalPromptInput')->willReturn('Focus on sales performance');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getPlaybookCategories')->willReturn(['category1', 'category2']);\n $report->method('getCustomName')->willReturn('My Custom Report');\n\n $result = $this->createMock(AutomatedReportResult::class);\n $result->method('getFromDate')->willReturn(Carbon::parse('2023-01-01'));\n $result->method('getToDate')->willReturn(Carbon::parse('2023-01-31'));\n $result->method('getReport')->willReturn($report);\n\n $this->automatedReportsRepository->method('findResultByUuid')->willReturn($result);\n\n // Set up webhook service to return callback URL\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n // Call the method\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n // Verify result\n $this->assertEquals(1, $result['team_id']);\n $this->assertEquals([101, 102], $result['group_ids']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals('2023-01-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2023-01-31T23:59:59+00:00', $result['to_date']);\n $this->assertEquals([201, 202], $result['call_deal_stage']);\n $this->assertEquals([301, 302], $result['current_deal_stage']);\n $this->assertEquals(1000, $result['deal_min_value']);\n $this->assertEquals(5000, $result['deal_max_value']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals(600, $result['call_duration_min_seconds']);\n $this->assertEquals(1800, $result['call_duration_max_seconds']);\n $this->assertEquals('Focus on sales performance', $result['special_requirements']);\n $this->assertEquals($resultUuid, $result['request_id']);\n $this->assertEquals($callbackUrl, $result['callback_url']);\n $this->assertEquals('1 - 31 Jan 2023', $result['report_period']);\n $this->assertEquals(['category1', 'category2'], $result['playbook_categories']);\n $this->assertEquals('My Custom Report', $result['custom_name']);\n }\n\n /**\n * Test calculateFromAndToDate method with one-off frequency\n */\n public function testCalculateFromAndToDateWithOneOffFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2023-01-01'));\n $report->method('getTo')->willReturn(Carbon::parse('2023-01-31'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-01-01', $result['fromDate']->format('Y-m-d'));\n $this->assertEquals('2023-01-31', $result['toDate']->format('Y-m-d'));\n }\n\n /**\n * Test calculateFromAndToDate method with weekly frequency\n */\n public function testCalculateFromAndToDateWithWeeklyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-02-05 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2023-02-11 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with monthly frequency\n */\n public function testCalculateFromAndToDateWithMonthlyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2023-01-01 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2023-01-31 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with quarterly frequency\n */\n public function testCalculateFromAndToDateWithQuarterlyFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_QUARTERLY);\n\n // Freeze time for testing\n Carbon::setTestNow(Carbon::parse('2023-02-15 14:30:00'));\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n\n // Verify result\n $this->assertInstanceOf(Carbon::class, $result['fromDate']);\n $this->assertInstanceOf(Carbon::class, $result['toDate']);\n $this->assertEquals('2022-10-01 00:00:00', $result['fromDate']->format('Y-m-d H:i:s'));\n $this->assertEquals('2022-12-31 23:59:59', $result['toDate']->format('Y-m-d H:i:s'));\n\n // Reset frozen time\n Carbon::setTestNow();\n }\n\n /**\n * Test calculateFromAndToDate method with invalid frequency\n */\n public function testCalculateFromAndToDateWithInvalidFrequency(): void\n {\n // Mock report\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getFrequency')->willReturn('invalid_frequency');\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Unsupported frequency: invalid_frequency');\n\n // Access private method using reflection\n self::invokePrivateMethod('calculateFromAndToDate', $this->service, [$report]);\n }\n\n /**\n * Test getCallbackUrl method\n */\n public function testGetCallbackUrl(): void\n {\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n // Set up webhook service to return callback URL\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('getCallbackUrl', $this->service, []);\n\n // Verify result\n $this->assertEquals($callbackUrl, $result);\n }\n\n /**\n * Test validateDealValues method\n */\n public function testValidateDealValues(): void\n {\n $data = [\n 'min_deal_value' => 1000,\n 'max_deal_value' => 5000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1000, $result['deal_value_min']);\n $this->assertEquals(5000, $result['deal_value_max']);\n }\n\n /**\n * Test validateDealValues method with min value only\n */\n public function testValidateDealValuesWithMinValueOnly(): void\n {\n $data = [\n 'min_deal_value' => 1000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1000, $result['deal_value_min']);\n $this->assertArrayNotHasKey('deal_value_max', $result);\n }\n\n /**\n * Test validateDealValues method with max value only\n */\n public function testValidateDealValuesWithMaxValueOnly(): void\n {\n $data = [\n 'max_deal_value' => 5000,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(5000, $result['deal_value_max']);\n $this->assertArrayNotHasKey('deal_value_min', $result);\n }\n\n /**\n * Test validateDealValues method with min value too large\n */\n public function testValidateDealValuesWithMinValueTooLarge(): void\n {\n $data = [\n 'min_deal_value' => 5000000000, // Larger than 4294967295 (max uint)\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with max value too large\n */\n public function testValidateDealValuesWithMaxValueTooLarge(): void\n {\n $data = [\n 'max_deal_value' => 5000000000, // Larger than 4294967295 (max uint)\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Max deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with min value negative\n */\n public function testValidateDealValuesWithMinValueNegative(): void\n {\n $data = [\n 'min_deal_value' => -1000,\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDealValues method with min value greater than max value\n */\n public function testValidateDealValuesWithMinValueGreaterThanMaxValue(): void\n {\n $data = [\n 'min_deal_value' => 5000,\n 'max_deal_value' => 1000,\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min deal value cannot be greater than max deal value');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDealValues', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateDateRange method with one-off frequency\n */\n public function testValidateDateRangeWithOneOffFrequency(): void\n {\n // Create a stub for the parseDate method using the TestPrivateMethod trait\n $parseDateStub = static function ($dateString) {\n if ($dateString === '2023-01-01') {\n return '2023-01-01 00:00:00';\n }\n\n if ($dateString === '2023-01-31') {\n return '2023-01-31 00:00:00';\n }\n\n return null;\n };\n\n // Set up test data\n $data = [\n 'start_date_period' => '2023-01-01',\n 'end_date_period' => '2023-01-31',\n ];\n\n // Manually perform the operations that validateDateRange would do\n // This avoids the need to mock private methods\n $result = [\n 'from' => $parseDateStub($data['start_date_period']),\n 'to' => $parseDateStub($data['end_date_period']),\n ];\n\n // Verify result\n $this->assertEquals('2023-01-01 00:00:00', $result['from']);\n $this->assertEquals('2023-01-31 00:00:00', $result['to']);\n }\n\n /**\n * Test validateDateRange method with one-off frequency and missing dates\n */\n public function testValidateDateRangeWithOneOffFrequencyAndMissingDates(): void\n {\n $data = [];\n $reportData = [];\n $frequency = 'one_off';\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Start date and end date are required for one_off frequency');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateDateRange', $this->service, [$data, $reportData, $frequency]);\n }\n\n /**\n * Test validateDateRange method with non-one-off frequency\n */\n public function testValidateDateRangeWithNonOneOffFrequency(): void\n {\n $data = [\n 'start_date_period' => '2023-01-01',\n 'end_date_period' => '2023-01-31',\n ];\n\n $reportData = [];\n $frequency = 'weekly';\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateDateRange', $this->service, [$data, $reportData, $frequency]);\n\n // Verify result\n $this->assertNull($result['from']);\n $this->assertNull($result['to']);\n }\n\n /**\n * Test validateCallDurations method\n */\n public function testValidateCallDurations(): void\n {\n $data = [\n 'min_call_duration' => 10,\n 'max_call_duration' => 30,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result (minutes converted to seconds)\n $this->assertEquals(600, $result['call_duration_min']);\n $this->assertEquals(1800, $result['call_duration_max']);\n }\n\n /**\n * Test validateCallDurations method with min duration only\n */\n public function testValidateCallDurationsWithMinDurationOnly(): void\n {\n $data = [\n 'min_call_duration' => 10,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(600, $result['call_duration_min']);\n $this->assertArrayNotHasKey('call_duration_max', $result);\n }\n\n /**\n * Test validateCallDurations method with max duration only\n */\n public function testValidateCallDurationsWithMaxDurationOnly(): void\n {\n $data = [\n 'max_call_duration' => 30,\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(1800, $result['call_duration_max']);\n $this->assertArrayNotHasKey('call_duration_min', $result);\n }\n\n /**\n * Test validateCallDurations method with min duration too large\n */\n public function testValidateCallDurationsWithMinDurationTooLarge(): void\n {\n $data = [\n 'min_call_duration' => 100000000, // Too large when converted to seconds\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Min call duration should be between 0 and 4294967295');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateCallDurations', $this->service, [$data, $reportData]);\n }\n\n /**\n * Test validateCallTypes method\n */\n public function testValidateCallTypes(): void\n {\n $data = [\n 'call_type' => ['conference'],\n ];\n\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n\n // Verify result\n $this->assertEquals(['conference'], $result['call_types']);\n }\n\n /**\n * Test validateCallTypes method with empty call types\n */\n public function testValidateCallTypesWithEmptyCallTypes(): void\n {\n $data = [];\n $reportData = [];\n\n // Access private method using reflection\n $result = self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n\n // Verify the result (should default to all call types)\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n }\n\n /**\n * Test validateCallTypes method with an invalid call type\n */\n public function testValidateCallTypesWithInvalidCallType(): void\n {\n $data = [\n 'call_type' => ['invalid_call_type'],\n ];\n\n $reportData = [];\n\n // Expect exception\n $this->expectException(InvalidArgumentException::class);\n $this->expectExceptionMessage('Call type invalid_call_type is invalid');\n\n // Access private method using reflection\n self::invokePrivateMethod('validateCallTypes', $this->service, [$data, $reportData]);\n }\n\n private function getService($dispatcher): AutomatedReportsService\n {\n return new AutomatedReportsService(\n $this->createMock(TeamRepository::class),\n $this->createMock(GroupRepository::class),\n $this->createMock(UserRepository::class),\n $this->createMock(StageRepository::class),\n $this->createMock(DealStagesService::class),\n $this->createMock(RecipientsService::class),\n $this->createMock(AutomatedReportsRepository::class),\n $this->createMock(Webhook::class),\n $dispatcher,\n $this->createMock(ActivityTypeService::class),\n $this->createMock(PlaybookCategoryRepository::class),\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n /**\n * Test generateOneOffReport method when status is false\n */\n public function testGenerateOneOffReportWithInactiveStatus(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with inactive status\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n // Dispatcher should not be called\n $dispatcher->expects($this->never())\n ->method('dispatch');\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n /**\n * Test generateOneOffReport method when frequency is not one-off\n */\n public function testGenerateOneOffReportWithNonOneOffFrequency(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with active status but non-one-off frequency\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(true);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n\n // Dispatcher should not be called\n $dispatcher->expects($this->never())\n ->method('dispatch');\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n /**\n * Test generateOneOffReport method when conditions are met\n */\n public function testGenerateOneOffReportWithValidConditions(): void\n {\n // Create mock for BusDispatcher\n $dispatcher = $this->createMock(BusDispatcher::class);\n\n // Create service instance with mocked dependencies\n $service = $this->getService($dispatcher);\n\n // Mock report with active status and one-off frequency\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getStatus')->willReturn(true);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getUuid')->willReturn('test-uuid');\n\n // Dispatcher should be called once with RequestGenerateReportJob\n $dispatcher->expects($this->once())\n ->method('dispatch')\n ->with($this->callback(function ($job) {\n return $job instanceof \\Jiminny\\Jobs\\AutomatedReports\\RequestGenerateReportJob\n && $job->uniqueId() === 'test-uuid';\n }));\n\n // Call the private method\n self::invokePrivateMethod('generateOneOffReport', $service, [$report]);\n }\n\n public function testCreateReportResult(): void\n {\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getId')->willReturn(1);\n\n $expectedResult = $this->createMock(AutomatedReportResult::class);\n\n $this->automatedReportsRepository->expects($this->once())\n ->method('createResult')\n ->with([\n 'report_id' => 1,\n 'status' => AutomatedReportResult::STATUS_DEFAULT,\n 'media_type' => 'pdf',\n ])\n ->willReturn($expectedResult);\n\n $result = $this->service->createReportResult($report, ['media_type' => 'pdf']);\n\n $this->assertSame($expectedResult, $result);\n }\n\n public function testFindChildResult(): void\n {\n $parentResult = $this->createMock(AutomatedReportResult::class);\n $childResult = $this->createMock(AutomatedReportResult::class);\n $type = AutomatedReportsService::MEDIA_TYPE_PODCAST;\n\n $this->automatedReportsRepository->expects($this->once())\n ->method('findChildResult')\n ->with($parentResult, $type)\n ->willReturn($childResult);\n\n $result = $this->service->findChildResult($parentResult, $type);\n\n $this->assertSame($childResult, $result);\n }\n\n public function testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 14:30:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_WEEKLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2026-01-11T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2026-01-17T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 05:00:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2025-12-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-12-31T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n Carbon::setTestNow(Carbon::parse('2026-01-20 05:00:00'));\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_QUARTERLY);\n $report->method('getFrom')->willReturn(null);\n $report->method('getTo')->willReturn(null);\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2025-10-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-12-31T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetGenerateReportPayloadOneOffIncludesCallsOnFinalDay(): void\n {\n $resultUuid = 'result-uuid';\n $callbackUrl = 'https://example.com/webhook/reports/ready';\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getTeamId')->willReturn(1);\n $report->method('getGroups')->willReturn([]);\n $report->method('getType')->willReturn('exec_summary');\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_ONE_OFF);\n $report->method('getFrom')->willReturn(Carbon::parse('2026-01-01 00:00:00'));\n $report->method('getTo')->willReturn(Carbon::parse('2026-01-20 00:00:00'));\n $report->method('getDealAtCallStages')->willReturn([]);\n $report->method('getCurrentDealStages')->willReturn([]);\n $report->method('getDealValueMin')->willReturn(null);\n $report->method('getDealValueMax')->willReturn(null);\n $report->method('getCallTypes')->willReturn(['conference']);\n $report->method('getCallDurationMin')->willReturn(null);\n $report->method('getCallDurationMax')->willReturn(null);\n $report->method('getAdditionalPromptInput')->willReturn(null);\n $report->method('getPlaybookCategories')->willReturn([]);\n $report->method('getMediaTypes')->willReturn(['pdf']);\n\n $this->webhookService->expects($this->once())\n ->method('route')\n ->with('jiminny.webhook.reports.ready')\n ->willReturn($callbackUrl);\n\n $result = $this->service->getGenerateReportPayload($report, $resultUuid);\n\n $this->assertEquals('2026-01-01T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2026-01-20T23:59:59+00:00', $result['to_date']);\n }\n\n public function testUpdateResultNamesIsCalledWhenCustomNameChanges(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Old Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn('New Name');\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $result1 = $this->createMock(AutomatedReportResult::class);\n $result1->method('getReport')->willReturn($updatedReport);\n $result1->method('getFromDate')->willReturn(Carbon::parse('2025-05-01'));\n $result1->method('getToDate')->willReturn(Carbon::parse('2025-05-31'));\n $result1->method('getGroups')->willReturn([]);\n $result1->method('getMediaType')->willReturn(AutomatedReportsService::MEDIA_TYPE_PDF);\n $result1->expects($this->once())\n ->method('update')\n ->with(['name' => 'New Name - May 2025']);\n\n $results = new \\Illuminate\\Database\\Eloquent\\Collection([$result1]);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->once())\n ->method('getResultsByReport')\n ->with($updatedReport)\n ->willReturn($results);\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n public function testUpdateResultNamesIsNotCalledWhenCustomNameUnchanged(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Same Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn('Same Name');\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->never())\n ->method('getResultsByReport');\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n public function testUpdateResultNamesRollbackToNoCustomNameIncludesTeams(): void\n {\n $reportUuid = 'report-uuid';\n\n $team = $this->createMock(\\Jiminny\\Models\\Team::class);\n $team->method('getId')->willReturn(1);\n $team->method('hasFeature')->willReturn(true);\n $this->teamRepository->method('idOrUuid')->willReturn($team);\n\n $report = $this->createMock(AutomatedReport::class);\n $report->method('getCustomName')->willReturn('Old Custom Name');\n $report->method('getUuid')->willReturn($reportUuid);\n $report->method('getStatus')->willReturn(false);\n $report->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n\n $updatedReportTeam = $this->createMock(\\Jiminny\\Models\\Team::class);\n\n $updatedReport = $this->createMock(AutomatedReport::class);\n $updatedReport->method('getCustomName')->willReturn(null);\n $updatedReport->method('getStatus')->willReturn(false);\n $updatedReport->method('getFrequency')->willReturn(AutomatedReportsService::FREQUENCY_MONTHLY);\n $updatedReport->method('getType')->willReturn('exec_summary');\n $updatedReport->method('getTeam')->willReturn($updatedReportTeam);\n $updatedReport->method('getUuid')->willReturn('report-uuid');\n $updatedReport->method('getFrom')->willReturn(null);\n $updatedReport->method('getTo')->willReturn(null);\n $updatedReport->method('getDealValueMin')->willReturn(null);\n $updatedReport->method('getDealValueMax')->willReturn(null);\n $updatedReport->method('getCallTypes')->willReturn([]);\n $updatedReport->method('getMediaTypes')->willReturn([AutomatedReportsService::MEDIA_TYPE_PDF]);\n $updatedReport->method('getCallDurationMin')->willReturn(null);\n $updatedReport->method('getCallDurationMax')->willReturn(null);\n $updatedReport->method('getGroups')->willReturn([]);\n $updatedReport->method('getDealAtCallStages')->willReturn([]);\n $updatedReport->method('getCurrentDealStages')->willReturn([]);\n $updatedReport->method('getRecipients')->willReturn(['users' => []]);\n $updatedReport->method('getCreator')->willReturn(null);\n $updatedReport->method('getAdditionalPromptInput')->willReturn(null);\n $updatedReport->method('getCreatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getUpdatedAt')->willReturn(\\Illuminate\\Support\\Carbon::now());\n $updatedReport->method('getDeletedAt')->willReturn(null);\n\n $result1 = $this->createMock(AutomatedReportResult::class);\n $result1->method('getReport')->willReturn($updatedReport);\n $result1->method('getFromDate')->willReturn(Carbon::parse('2025-05-01'));\n $result1->method('getToDate')->willReturn(Carbon::parse('2025-05-31'));\n $result1->method('getGroups')->willReturn([]);\n $result1->method('getMediaType')->willReturn(AutomatedReportsService::MEDIA_TYPE_PDF);\n $result1->expects($this->once())\n ->method('update')\n ->with(['name' => 'Exec Summary - May 2025 - All']);\n\n $results = new \\Illuminate\\Database\\Eloquent\\Collection([$result1]);\n\n $this->automatedReportsRepository->method('findByUuid')->willReturn($report);\n $this->automatedReportsRepository->method('update')->willReturn($updatedReport);\n $this->automatedReportsRepository->expects($this->once())\n ->method('getResultsByReport')\n ->with($updatedReport)\n ->willReturn($results);\n\n $this->service->update($reportUuid, $this->buildMinimalUpdatePayload());\n }\n\n private function buildMinimalUpdatePayload(): array\n {\n return [\n 'organization' => 'team-uuid',\n 'report_type' => 'exec_summary',\n 'report_enabled' => false,\n 'frequency' => AutomatedReportsService::FREQUENCY_MONTHLY,\n 'media_types' => [AutomatedReportsService::MEDIA_TYPE_PDF],\n ];\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-4960201745265773485
|
-1537754384480138524
|
click
|
accessibility
|
NULL
|
2 files committed
JY-20157 fix failing tests
text/ 2 files committed
JY-20157 fix failing tests
text/html
text/html
text/html
Edit Commit Message…
Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceReportGen…tionTest
Run 'AutomatedReportsServiceReportGenerationTest'
Debug 'AutomatedReportsServiceReportGenerationTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
46
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use InvalidArgumentException;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceReportGenerationTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Webhook $webhookService;
private AutomatedReportsRepository $automatedReportsRepository;
private TeamRepository $teamRepository;
protected function setUp(): void
{
parent::setUp();
// Create mocks for dependencies
$this->teamRepository = $this->createMock(TeamRepository::class);
$teamRepository = $this->teamRepository;
$groupRepository = $this->createMock(GroupRepository::class);
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$this->automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$this->webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$this->automatedReportsRepository,
$this->webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
/**
* Test getGenerateReportPayload method with one-off frequency
*/
public function testGetGenerateReportPayloadWithOneOffFrequency(): void
{
$reportUuid = 'report-uuid';
$resultUuid = 'result-uuid';
$callbackUrl = '[URL_WITH_CREDENTIALS] @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
75628
|
NULL
|
0
|
2026-04-24T06:41:47.284931+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012907284_m1.jpg...
|
Slack
|
platform-inner-team (Channel) - Jiminny Inc - Slac platform-inner-team (Channel) - Jiminny Inc - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Nikolov
Yesterday at 2:45:42 PM
2:45 PM
Може ли ревю тук :
https://github.com/jiminny/app/pull/12002
https://github.com/jiminny/app/pull/12002
(edited)
#12002 JY-20724 | Optimize get Accounts / Contacts Map
#12002 JY-20724 | Optimize get Accounts / Contacts Map
JIRA:
JY-20724
JY-20724
Comparison after optimization:
| Config | Entity
| Rows
| Old peak alloc in this fn | New peak alloc in this fn (~72 B/row) | Saved at peak |
| ------ | -------- | ---------- | ------------------------- | ------------------------------------- | ------------- |
| 356
| accounts | 168,946
| ~89.7 MB (measured)
| ~12 MB
| ~78 MB
|
Show more
Comments
9
jiminny/app
jiminny/app
|
Apr 22nd
|
Added by
GitHub
GitHub
Nikolay Ivanov
Yesterday at 3:24:32 PM
3:24 PM
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
Или нещо аз не разбирам?
20 replies
Last reply 18 hours ago
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
Nikolay Yankov
Yesterday at 3:50:49 PM
3:50 PM
replied to a thread:
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал? https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b…
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
…
лол, ами предлагам май да му забраним да къмитва... не знам
пускам към всички да видят
View newer replies
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
View thread
Forward message…
Save for later
More actions
Jump to date
New
Nikolay Yankov
Today at 9:38:37 AM
9:38 AM
Ще се забавя за дейлито. Започнете без мен.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Jump to date
CircleCI
APP
Today at 12:22:31 AM
12:22 AM
New commits deployed to Prophet Prod-US:
[33a3bf5](
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix Azure Grok deployment name (#495) (steliyan-g)
[2d35b7c](
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix structured output bug (#494) (steliyan-g)
[1edbc4d](
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
) - [JY-20726](
https://jiminny.atlassian.net/browse/JY-20726
https://jiminny.atlassian.net/browse/JY-20726
): Grok via Azure (#489) (steliyan-g)
Today at 12:22:55 AM
12:22
New commits deployed to Prophet Prod-EU:
[33a3bf5](
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix Azure Grok deployment name (#495) (steliyan-g)
[2d35b7c](
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix structured output bug (#494) (steliyan-g)
[1edbc4d](
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
) - [JY-20726](
https://jiminny.atlassian.net/browse/JY-20726
https://jiminny.atlassian.net/browse/JY-20726
): Grok via Azure (#489) (steliyan-g)
GitHub
APP
Today at 9:12:12 AM
9:12 AM
3 new commits
3 new commits
pushed to
master
master
by
TodorStamatovJiminny
TodorStamatovJiminny
e945bd10
e945bd10
- JY-20713: allow job restart regardless of status
196d18c7
196d18c7
- Merge branch 'master' into JY-20713-activity-sync-job-restart
bee7d275
bee7d275
- Merge pull request #12009 from jiminny/JY-20713-activity-sync-job-restart
jiminny/app
jiminny/app
|
Added by
GitHub
GitHub
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
CircleCI
APP
Today at 9:35:12 AM
9:35 AM
Deployment Successful! tada emoji
Deployment Successful!
Project
: app
When
: 04/24/2026 06:35:12
Tag
:
View Job
View Job
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Channel Overview","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Channel Overview","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":19,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":18,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":18,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Nikolov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 2:45:42 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:45 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Може ли ревю тук :","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/12002","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12002","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"#12002 JY-20724 | Optimize get Accounts / Contacts Map","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"#12002 JY-20724 | Optimize get Accounts / Contacts Map","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"JIRA:","depth":26,"role_description":"text"},{"role":"AXLink","text":"JY-20724","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-20724","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Comparison after optimization:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| Config | Entity","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| Rows","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| Old peak alloc in this fn | New peak alloc in this fn (~72 B/row) | Saved at peak |","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| ------ | -------- | ---------- | ------------------------- | ------------------------------------- | ------------- |","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| 356","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| accounts | 168,946","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| ~89.7 MB (measured)","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| ~12 MB","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"| ~78 MB","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXButton","text":"Show more","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Comments","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":27,"role_description":"text"},{"role":"AXLink","text":"jiminny/app","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny/app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Apr 22nd","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Added by","depth":26,"role_description":"text"},{"role":"AXLink","text":"GitHub","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"GitHub","depth":27,"role_description":"text"},{"role":"AXButton","text":"Nikolay Ivanov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 3:24:32 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:24 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Или нещо аз не разбирам?","depth":25,"role_description":"text"},{"role":"AXButton","text":"20 replies","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply 18 hours ago","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply to thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Summarize thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Yesterday at 3:50:49 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3:50 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"replied to a thread:","depth":24,"role_description":"text"},{"role":"AXButton","text":"Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал? https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b…","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"…","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"лол, ами предлагам май да му забраним да къмитва... не знам","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"пускам към всички да видят","depth":25,"role_description":"text"},{"role":"AXButton","text":"View newer replies","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":23,"role_description":"text"},{"role":"AXButton","text":"Nikolay Yankov","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 9:38:37 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Ще се забавя за дейлито. Започнете без мен.","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":24,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"CircleCI","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 12:22:31 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:22 AM","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"New commits deployed to Prophet Prod-US:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[33a3bf5](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20276](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Fix Azure Grok deployment name (#495) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[2d35b7c](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20276](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Fix structured output bug (#494) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[1edbc4d](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20726](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20726","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20726","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Grok via Azure (#489) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXLink","text":"Today at 12:22:55 AM","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:22","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"New commits deployed to Prophet Prod-EU:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[33a3bf5](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20276](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Fix Azure Grok deployment name (#495) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[2d35b7c](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20276](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20276","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Fix structured output bug (#494) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"[1edbc4d](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569","depth":27,"role_description":"text"},{"role":"AXStaticText","text":") - [JY-20726](","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/JY-20726","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/JY-20726","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"): Grok via Azure (#489) (steliyan-g)","depth":26,"role_description":"text"},{"role":"AXButton","text":"GitHub","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 9:12:12 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9:12 AM","depth":26,"role_description":"text"},{"role":"AXLink","text":"3 new commits","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3 new commits","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"pushed to","depth":25,"role_description":"text"},{"role":"AXLink","text":"master","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"master","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"by","depth":25,"role_description":"text"},{"role":"AXLink","text":"TodorStamatovJiminny","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"TodorStamatovJiminny","depth":26,"role_description":"text"},{"role":"AXLink","text":"e945bd10","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"e945bd10","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"- JY-20713: allow job restart regardless of status","depth":27,"role_description":"text"},{"role":"AXLink","text":"196d18c7","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"196d18c7","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"- Merge branch 'master' into JY-20713-activity-sync-job-restart","depth":27,"role_description":"text"},{"role":"AXLink","text":"bee7d275","depth":28,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"bee7d275","depth":29,"role_description":"text"},{"role":"AXStaticText","text":"- Merge pull request #12009 from jiminny/JY-20713-activity-sync-job-restart","depth":27,"role_description":"text"},{"role":"AXLink","text":"jiminny/app","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny/app","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Added by","depth":27,"role_description":"text"},{"role":"AXLink","text":"GitHub","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"GitHub","depth":28,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New","depth":23,"role_description":"text"},{"role":"AXButton","text":"CircleCI","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"","depth":25,"role_description":"text"},{"role":"AXLink","text":"Today at 9:35:12 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9:35 AM","depth":26,"role_description":"text"},{"role":"AXHeading","text":"Deployment Successful! tada emoji","depth":25,"role_description":"heading"},{"role":"AXStaticText","text":"Deployment Successful!","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"Project","depth":26,"role_description":"text"},{"role":"AXStaticText","text":": app","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"When","depth":26,"role_description":"text"},{"role":"AXStaticText","text":": 04/24/2026 06:35:12","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Tag","depth":26,"role_description":"text"},{"role":"AXStaticText","text":":","depth":26,"role_description":"text"},{"role":"AXButton","text":"View Job","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View Job","depth":28,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":27,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":27,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":27,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
759137341286817238
|
-6034940192337631156
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stefka Stoyanova
Adelina Petrova
Vasil Vasilev
Stoyan Tomov
Galya Dimitrova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Jira Cloud
Toast
Messages
Messages
Channel Overview
Channel Overview
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Nikolay Nikolov
Yesterday at 2:45:42 PM
2:45 PM
Може ли ревю тук :
https://github.com/jiminny/app/pull/12002
https://github.com/jiminny/app/pull/12002
(edited)
#12002 JY-20724 | Optimize get Accounts / Contacts Map
#12002 JY-20724 | Optimize get Accounts / Contacts Map
JIRA:
JY-20724
JY-20724
Comparison after optimization:
| Config | Entity
| Rows
| Old peak alloc in this fn | New peak alloc in this fn (~72 B/row) | Saved at peak |
| ------ | -------- | ---------- | ------------------------- | ------------------------------------- | ------------- |
| 356
| accounts | 168,946
| ~89.7 MB (measured)
| ~12 MB
| ~78 MB
|
Show more
Comments
9
jiminny/app
jiminny/app
|
Apr 22nd
|
Added by
GitHub
GitHub
Nikolay Ivanov
Yesterday at 3:24:32 PM
3:24 PM
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
Или нещо аз не разбирам?
20 replies
Last reply 18 hours ago
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
Nikolay Yankov
Yesterday at 3:50:49 PM
3:50 PM
replied to a thread:
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал? https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b…
Някой нещо да е настройвал по github actions? Почна да прави къмити вместо мен без да съм му разрешевал?
https://github.com/jiminny/app/pull/12007/changes/a68f42f210859f838a4fdced451f750627be581b
…
лол, ами предлагам май да му забраним да къмитва... не знам
пускам към всички да видят
View newer replies
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
View thread
Forward message…
Save for later
More actions
Jump to date
New
Nikolay Yankov
Today at 9:38:37 AM
9:38 AM
Ще се забавя за дейлито. Започнете без мен.
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Jump to date
CircleCI
APP
Today at 12:22:31 AM
12:22 AM
New commits deployed to Prophet Prod-US:
[33a3bf5](
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix Azure Grok deployment name (#495) (steliyan-g)
[2d35b7c](
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix structured output bug (#494) (steliyan-g)
[1edbc4d](
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
) - [JY-20726](
https://jiminny.atlassian.net/browse/JY-20726
https://jiminny.atlassian.net/browse/JY-20726
): Grok via Azure (#489) (steliyan-g)
Today at 12:22:55 AM
12:22
New commits deployed to Prophet Prod-EU:
[33a3bf5](
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
https://github.com/jiminny/prophet/commit/33a3bf5c2f9a59d0fc90f9c3c0badb5804a11ebf
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix Azure Grok deployment name (#495) (steliyan-g)
[2d35b7c](
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
https://github.com/jiminny/prophet/commit/2d35b7cc9510939533f617d97ad278872de6fd9a
) - [JY-20276](
https://jiminny.atlassian.net/browse/JY-20276
https://jiminny.atlassian.net/browse/JY-20276
): Fix structured output bug (#494) (steliyan-g)
[1edbc4d](
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
https://github.com/jiminny/prophet/commit/1edbc4dcabfa45399c99471c5c394b966dcfb569
) - [JY-20726](
https://jiminny.atlassian.net/browse/JY-20726
https://jiminny.atlassian.net/browse/JY-20726
): Grok via Azure (#489) (steliyan-g)
GitHub
APP
Today at 9:12:12 AM
9:12 AM
3 new commits
3 new commits
pushed to
master
master
by
TodorStamatovJiminny
TodorStamatovJiminny
e945bd10
e945bd10
- JY-20713: allow job restart regardless of status
196d18c7
196d18c7
- Merge branch 'master' into JY-20713-activity-sync-job-restart
bee7d275
bee7d275
- Merge pull request #12009 from jiminny/JY-20713-activity-sync-job-restart
jiminny/app
jiminny/app
|
Added by
GitHub
GitHub
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
New
CircleCI
APP
Today at 9:35:12 AM
9:35 AM
Deployment Successful! tada emoji
Deployment Successful!
Project
: app
When
: 04/24/2026 06:35:12
Tag
:
View Job
View Job
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp• Daily - Platform - in 4 mLA100% <8Fri 24 Apr 9:41:47APP (-zsh)APP (-zsh)*3DOCKERDEV (docker)$82jiminny-worker-processing-2:jiminny-worker-processing-2_00:startedjiminny-worker-processing-3:jiminny-worker-processing-3_00:startedjiminny-worker-processing-4:jiminny-worker-processing-4_00:startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00: startedworker:worker_00: startedworker-analytics:worker-analytics_00:startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00:startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00:startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00:startedworker-nudges:worker-nudges_00: startedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfixdocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.PHP runtime: 8.3.30Running analysis on 7 cores with 10 files per process.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loadedconfig default from".php-cs-fixer.dist.php".5616/5616 [g100%screenpipe"• *4-zsh• *5APPFixed 0 of 5616 files in 40.863 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image + docker debug docker_lamp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ I...
|
NULL
|
|
75545
|
NULL
|
0
|
2026-04-24T06:36:20.493451+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012580493_m1.jpg...
|
iTerm2
|
APP (-zsh)
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 23 14:01:28 on ttys007
Poetry Last login: Thu Apr 23 14:01:28 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20157-AJ-report-not-send-notification
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1015, done.
remote: Counting objects: 100% (262/262), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)
Receiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.
Resolving deltas: 100% (613/613), completed with 65 local objects.
From github.com:jiminny/app
c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
* [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
* [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails
d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart
242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error
0dd5b23990..60fa1787c1 master -> origin/master
f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416
* [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423
Updating c3c8d86b22..68bb20c72a
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Console/Kernel.php | 4 +
app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++
app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-
app/Contracts/Services/Crm/ServiceInterface.php | 29 ----
app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/CrmController.php | 19 ++-
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Activity/SyncActivity.php | 3 +-
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncActivity.php | 10 ++
app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 26 ++--
app/Jobs/Crm/SyncTeamMetadata.php | 14 +-
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Listeners/Crm/ResolveOwner.php | 21 +--
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++
app/Services/Crm/BaseService.php | 13 --
app/Services/Crm/Bullhorn/BullhornService.php | 21 ---
app/Services/Crm/Close/Service.php | 38 -----
app/Services/Crm/Copper/Service.php | 37 -----
app/Services/Crm/Dummy/Service.php | 25 ----
app/Services/Crm/Hubspot/Service.php | 37 -----
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--
app/Services/Crm/IntegrationApp/Service.php | 2 +
app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -
app/Services/Crm/Pipedrive/Service.php | 43 +-----
app/Services/Crm/Salesforce/Service.php | 13 +-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++
tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -
tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
113 files changed, 5468 insertions(+), 980 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js
create mode 100644 front-end/src/components/AiReports/constants.js
create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js
create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js
create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php
create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php
create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Transformers/UserTransformer.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -37,15 +37,14 @@
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
- ): void
- {
-// $user = User::find(143);
-// $count = $automatedReportsRepository->countUserReports($user);
-// $this->info("Count: {$count}");
-// $count = $automatedReportsRepository->countAllUserReports($user);
-// $this->info("All count: {$count}");
-//
-// exit(1);
+ ): void {
+ // $user = User::find(143);
+ // $count = $automatedReportsRepository->countUserReports($user);
+ // $this->info("Count: {$count}");
+ // $count = $automatedReportsRepository->countAllUserReports($user);
+ // $this->info("All count: {$count}");
+ //
+ // exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
@@ -52,18 +51,18 @@
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
-// $from = $now->copy()->previousWeekday()->startOfDay();
-// $to = $now->copy()->previousWeekday()->endOfDay();
+ // $from = $now->copy()->previousWeekday()->startOfDay();
+ // $to = $now->copy()->previousWeekday()->endOfDay();
-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subWeek()->startOfWeek();
-// $toNew = $now->copy()->subWeek()->endOfWeek();
+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subWeek()->startOfWeek();
+ // $toNew = $now->copy()->subWeek()->endOfWeek();
-// $fromOld = $now->copy()->subMonths(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
----------- end diff -----------
Fixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ffmpeg
Close Tab
sqlite3
Close Tab
⌥⌘1
APP (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 23 14:01:28 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20157-AJ-report-not-send-notification\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1015, done.\nremote: Counting objects: 100% (262/262), done.\nremote: Compressing objects: 100% (143/143), done.\nremote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)\nReceiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.\nResolving deltas: 100% (613/613), completed with 65 local objects.\nFrom github.com:jiminny/app\n c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n 3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n * [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null\n * [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails\n d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart\n 242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error\n 0dd5b23990..60fa1787c1 master -> origin/master\n f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416\n * [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423\nUpdating c3c8d86b22..68bb20c72a\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Console/Kernel.php | 4 +\n app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++\n app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-\n app/Contracts/Services/Crm/ServiceInterface.php | 29 ----\n app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/CrmController.php | 19 ++-\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Activity/SyncActivity.php | 3 +-\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncActivity.php | 10 ++\n app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 26 ++--\n app/Jobs/Crm/SyncTeamMetadata.php | 14 +-\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Listeners/Crm/ResolveOwner.php | 21 +--\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++\n app/Services/Crm/BaseService.php | 13 --\n app/Services/Crm/Bullhorn/BullhornService.php | 21 ---\n app/Services/Crm/Close/Service.php | 38 -----\n app/Services/Crm/Copper/Service.php | 37 -----\n app/Services/Crm/Dummy/Service.php | 25 ----\n app/Services/Crm/Hubspot/Service.php | 37 -----\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--\n app/Services/Crm/IntegrationApp/Service.php | 2 +\n app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-\n app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -\n app/Services/Crm/Pipedrive/Service.php | 43 +-----\n app/Services/Crm/Salesforce/Service.php | 13 +-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++\n tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -\n tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 113 files changed, 5468 insertions(+), 980 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Transformers/UserTransformer.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n@@ -37,15 +37,14 @@\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n- ): void\n- {\n-// $user = User::find(143);\n-// $count = $automatedReportsRepository->countUserReports($user);\n-// $this->info(\"Count: {$count}\");\n-// $count = $automatedReportsRepository->countAllUserReports($user);\n-// $this->info(\"All count: {$count}\");\n-//\n-// exit(1);\n+ ): void {\n+ // $user = User::find(143);\n+ // $count = $automatedReportsRepository->countUserReports($user);\n+ // $this->info(\"Count: {$count}\");\n+ // $count = $automatedReportsRepository->countAllUserReports($user);\n+ // $this->info(\"All count: {$count}\");\n+ //\n+ // exit(1);\n \n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n@@ -52,18 +51,18 @@\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n \n-// $from = $now->copy()->previousWeekday()->startOfDay();\n-// $to = $now->copy()->previousWeekday()->endOfDay();\n+ // $from = $now->copy()->previousWeekday()->startOfDay();\n+ // $to = $now->copy()->previousWeekday()->endOfDay();\n \n-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subWeek()->startOfWeek();\n-// $toNew = $now->copy()->subWeek()->endOfWeek();\n+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subWeek()->startOfWeek();\n+ // $toNew = $now->copy()->subWeek()->endOfWeek();\n \n-// $fromOld = $now->copy()->subMonths(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n \n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n\n ----------- end diff -----------\n\n\nFixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [docker-xdebug-disable] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $","depth":4,"value":"Last login: Thu Apr 23 14:01:28 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20157-AJ-report-not-send-notification\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1015, done.\nremote: Counting objects: 100% (262/262), done.\nremote: Compressing objects: 100% (143/143), done.\nremote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)\nReceiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.\nResolving deltas: 100% (613/613), completed with 65 local objects.\nFrom github.com:jiminny/app\n c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n 3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n * [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null\n * [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails\n d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart\n 242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error\n 0dd5b23990..60fa1787c1 master -> origin/master\n f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416\n * [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423\nUpdating c3c8d86b22..68bb20c72a\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Console/Kernel.php | 4 +\n app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++\n app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-\n app/Contracts/Services/Crm/ServiceInterface.php | 29 ----\n app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/CrmController.php | 19 ++-\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Activity/SyncActivity.php | 3 +-\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncActivity.php | 10 ++\n app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 26 ++--\n app/Jobs/Crm/SyncTeamMetadata.php | 14 +-\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Listeners/Crm/ResolveOwner.php | 21 +--\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++\n app/Services/Crm/BaseService.php | 13 --\n app/Services/Crm/Bullhorn/BullhornService.php | 21 ---\n app/Services/Crm/Close/Service.php | 38 -----\n app/Services/Crm/Copper/Service.php | 37 -----\n app/Services/Crm/Dummy/Service.php | 25 ----\n app/Services/Crm/Hubspot/Service.php | 37 -----\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--\n app/Services/Crm/IntegrationApp/Service.php | 2 +\n app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-\n app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -\n app/Services/Crm/Pipedrive/Service.php | 43 +-----\n app/Services/Crm/Salesforce/Service.php | 13 +-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++\n tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -\n tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 113 files changed, 5468 insertions(+), 980 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Transformers/UserTransformer.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n@@ -37,15 +37,14 @@\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n- ): void\n- {\n-// $user = User::find(143);\n-// $count = $automatedReportsRepository->countUserReports($user);\n-// $this->info(\"Count: {$count}\");\n-// $count = $automatedReportsRepository->countAllUserReports($user);\n-// $this->info(\"All count: {$count}\");\n-//\n-// exit(1);\n+ ): void {\n+ // $user = User::find(143);\n+ // $count = $automatedReportsRepository->countUserReports($user);\n+ // $this->info(\"Count: {$count}\");\n+ // $count = $automatedReportsRepository->countAllUserReports($user);\n+ // $this->info(\"All count: {$count}\");\n+ //\n+ // exit(1);\n \n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n@@ -52,18 +51,18 @@\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n \n-// $from = $now->copy()->previousWeekday()->startOfDay();\n-// $to = $now->copy()->previousWeekday()->endOfDay();\n+ // $from = $now->copy()->previousWeekday()->startOfDay();\n+ // $to = $now->copy()->previousWeekday()->endOfDay();\n \n-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subWeek()->startOfWeek();\n-// $toNew = $now->copy()->subWeek()->endOfWeek();\n+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subWeek()->startOfWeek();\n+ // $toNew = $now->copy()->subWeek()->endOfWeek();\n \n-// $fromOld = $now->copy()->subMonths(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n \n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n\n ----------- end diff -----------\n\n\nFixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [docker-xdebug-disable] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.39444444,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3986111,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.59166664,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.59583336,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"sqlite3","depth":2,"bounds":{"left":0.7888889,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.79305553,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"APP (-zsh)","depth":1,"bounds":{"left":0.47569445,"top":0.033333335,"width":0.05138889,"height":0.017777778},"role_description":"text"}]...
|
-7923212814657071141
|
-1906223133490369957
|
idle
|
accessibility
|
NULL
|
Last login: Thu Apr 23 14:01:28 on ttys007
Poetry Last login: Thu Apr 23 14:01:28 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20157-AJ-report-not-send-notification
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1015, done.
remote: Counting objects: 100% (262/262), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)
Receiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.
Resolving deltas: 100% (613/613), completed with 65 local objects.
From github.com:jiminny/app
c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
* [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
* [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails
d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart
242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error
0dd5b23990..60fa1787c1 master -> origin/master
f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416
* [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423
Updating c3c8d86b22..68bb20c72a
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Console/Kernel.php | 4 +
app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++
app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-
app/Contracts/Services/Crm/ServiceInterface.php | 29 ----
app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/CrmController.php | 19 ++-
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Activity/SyncActivity.php | 3 +-
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncActivity.php | 10 ++
app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 26 ++--
app/Jobs/Crm/SyncTeamMetadata.php | 14 +-
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Listeners/Crm/ResolveOwner.php | 21 +--
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++
app/Services/Crm/BaseService.php | 13 --
app/Services/Crm/Bullhorn/BullhornService.php | 21 ---
app/Services/Crm/Close/Service.php | 38 -----
app/Services/Crm/Copper/Service.php | 37 -----
app/Services/Crm/Dummy/Service.php | 25 ----
app/Services/Crm/Hubspot/Service.php | 37 -----
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--
app/Services/Crm/IntegrationApp/Service.php | 2 +
app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -
app/Services/Crm/Pipedrive/Service.php | 43 +-----
app/Services/Crm/Salesforce/Service.php | 13 +-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++
tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -
tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
113 files changed, 5468 insertions(+), 980 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js
create mode 100644 front-end/src/components/AiReports/constants.js
create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js
create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js
create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php
create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php
create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Transformers/UserTransformer.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -37,15 +37,14 @@
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
- ): void
- {
-// $user = User::find(143);
-// $count = $automatedReportsRepository->countUserReports($user);
-// $this->info("Count: {$count}");
-// $count = $automatedReportsRepository->countAllUserReports($user);
-// $this->info("All count: {$count}");
-//
-// exit(1);
+ ): void {
+ // $user = User::find(143);
+ // $count = $automatedReportsRepository->countUserReports($user);
+ // $this->info("Count: {$count}");
+ // $count = $automatedReportsRepository->countAllUserReports($user);
+ // $this->info("All count: {$count}");
+ //
+ // exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
@@ -52,18 +51,18 @@
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
-// $from = $now->copy()->previousWeekday()->startOfDay();
-// $to = $now->copy()->previousWeekday()->endOfDay();
+ // $from = $now->copy()->previousWeekday()->startOfDay();
+ // $to = $now->copy()->previousWeekday()->endOfDay();
-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subWeek()->startOfWeek();
-// $toNew = $now->copy()->subWeek()->endOfWeek();
+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subWeek()->startOfWeek();
+ // $toNew = $now->copy()->subWeek()->endOfWeek();
-// $fromOld = $now->copy()->subMonths(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
----------- end diff -----------
Fixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ffmpeg
Close Tab
sqlite3
Close Tab
⌥⌘1
APP (-zsh)...
|
NULL
|
|
75544
|
NULL
|
0
|
2026-04-24T06:36:20.253872+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012580253_m2.jpg...
|
iTerm2
|
APP (-zsh)
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 23 14:01:28 on ttys007
Poetry Last login: Thu Apr 23 14:01:28 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20157-AJ-report-not-send-notification
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1015, done.
remote: Counting objects: 100% (262/262), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)
Receiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.
Resolving deltas: 100% (613/613), completed with 65 local objects.
From github.com:jiminny/app
c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
* [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
* [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails
d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart
242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error
0dd5b23990..60fa1787c1 master -> origin/master
f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416
* [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423
Updating c3c8d86b22..68bb20c72a
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Console/Kernel.php | 4 +
app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++
app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-
app/Contracts/Services/Crm/ServiceInterface.php | 29 ----
app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/CrmController.php | 19 ++-
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Activity/SyncActivity.php | 3 +-
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncActivity.php | 10 ++
app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 26 ++--
app/Jobs/Crm/SyncTeamMetadata.php | 14 +-
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Listeners/Crm/ResolveOwner.php | 21 +--
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++
app/Services/Crm/BaseService.php | 13 --
app/Services/Crm/Bullhorn/BullhornService.php | 21 ---
app/Services/Crm/Close/Service.php | 38 -----
app/Services/Crm/Copper/Service.php | 37 -----
app/Services/Crm/Dummy/Service.php | 25 ----
app/Services/Crm/Hubspot/Service.php | 37 -----
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--
app/Services/Crm/IntegrationApp/Service.php | 2 +
app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -
app/Services/Crm/Pipedrive/Service.php | 43 +-----
app/Services/Crm/Salesforce/Service.php | 13 +-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++
tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -
tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
113 files changed, 5468 insertions(+), 980 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js
create mode 100644 front-end/src/components/AiReports/constants.js
create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js
create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js
create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php
create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php
create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Transformers/UserTransformer.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -37,15 +37,14 @@
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
- ): void
- {
-// $user = User::find(143);
-// $count = $automatedReportsRepository->countUserReports($user);
-// $this->info("Count: {$count}");
-// $count = $automatedReportsRepository->countAllUserReports($user);
-// $this->info("All count: {$count}");
-//
-// exit(1);
+ ): void {
+ // $user = User::find(143);
+ // $count = $automatedReportsRepository->countUserReports($user);
+ // $this->info("Count: {$count}");
+ // $count = $automatedReportsRepository->countAllUserReports($user);
+ // $this->info("All count: {$count}");
+ //
+ // exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
@@ -52,18 +51,18 @@
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
-// $from = $now->copy()->previousWeekday()->startOfDay();
-// $to = $now->copy()->previousWeekday()->endOfDay();
+ // $from = $now->copy()->previousWeekday()->startOfDay();
+ // $to = $now->copy()->previousWeekday()->endOfDay();
-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subWeek()->startOfWeek();
-// $toNew = $now->copy()->subWeek()->endOfWeek();
+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subWeek()->startOfWeek();
+ // $toNew = $now->copy()->subWeek()->endOfWeek();
-// $fromOld = $now->copy()->subMonths(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
----------- end diff -----------
Fixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ffmpeg
Close Tab
sqlite3
Close Tab
⌥⌘1
APP (-zsh)...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 23 14:01:28 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20157-AJ-report-not-send-notification\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1015, done.\nremote: Counting objects: 100% (262/262), done.\nremote: Compressing objects: 100% (143/143), done.\nremote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)\nReceiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.\nResolving deltas: 100% (613/613), completed with 65 local objects.\nFrom github.com:jiminny/app\n c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n 3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n * [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null\n * [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails\n d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart\n 242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error\n 0dd5b23990..60fa1787c1 master -> origin/master\n f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416\n * [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423\nUpdating c3c8d86b22..68bb20c72a\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Console/Kernel.php | 4 +\n app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++\n app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-\n app/Contracts/Services/Crm/ServiceInterface.php | 29 ----\n app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/CrmController.php | 19 ++-\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Activity/SyncActivity.php | 3 +-\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncActivity.php | 10 ++\n app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 26 ++--\n app/Jobs/Crm/SyncTeamMetadata.php | 14 +-\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Listeners/Crm/ResolveOwner.php | 21 +--\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++\n app/Services/Crm/BaseService.php | 13 --\n app/Services/Crm/Bullhorn/BullhornService.php | 21 ---\n app/Services/Crm/Close/Service.php | 38 -----\n app/Services/Crm/Copper/Service.php | 37 -----\n app/Services/Crm/Dummy/Service.php | 25 ----\n app/Services/Crm/Hubspot/Service.php | 37 -----\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--\n app/Services/Crm/IntegrationApp/Service.php | 2 +\n app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-\n app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -\n app/Services/Crm/Pipedrive/Service.php | 43 +-----\n app/Services/Crm/Salesforce/Service.php | 13 +-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++\n tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -\n tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 113 files changed, 5468 insertions(+), 980 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Transformers/UserTransformer.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n@@ -37,15 +37,14 @@\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n- ): void\n- {\n-// $user = User::find(143);\n-// $count = $automatedReportsRepository->countUserReports($user);\n-// $this->info(\"Count: {$count}\");\n-// $count = $automatedReportsRepository->countAllUserReports($user);\n-// $this->info(\"All count: {$count}\");\n-//\n-// exit(1);\n+ ): void {\n+ // $user = User::find(143);\n+ // $count = $automatedReportsRepository->countUserReports($user);\n+ // $this->info(\"Count: {$count}\");\n+ // $count = $automatedReportsRepository->countAllUserReports($user);\n+ // $this->info(\"All count: {$count}\");\n+ //\n+ // exit(1);\n \n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n@@ -52,18 +51,18 @@\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n \n-// $from = $now->copy()->previousWeekday()->startOfDay();\n-// $to = $now->copy()->previousWeekday()->endOfDay();\n+ // $from = $now->copy()->previousWeekday()->startOfDay();\n+ // $to = $now->copy()->previousWeekday()->endOfDay();\n \n-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subWeek()->startOfWeek();\n-// $toNew = $now->copy()->subWeek()->endOfWeek();\n+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subWeek()->startOfWeek();\n+ // $toNew = $now->copy()->subWeek()->endOfWeek();\n \n-// $fromOld = $now->copy()->subMonths(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n \n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n\n ----------- end diff -----------\n\n\nFixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [docker-xdebug-disable] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $","depth":4,"value":"Last login: Thu Apr 23 14:01:28 on ttys007\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20157-AJ-report-not-send-notification\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull\nremote: Enumerating objects: 1015, done.\nremote: Counting objects: 100% (262/262), done.\nremote: Compressing objects: 100% (143/143), done.\nremote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)\nReceiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.\nResolving deltas: 100% (613/613), completed with 65 local objects.\nFrom github.com:jiminny/app\n c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages\n 3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command\n * [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null\n * [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails\n d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events\n 10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed\n * [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart\n 242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration\n * [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error\n 0dd5b23990..60fa1787c1 master -> origin/master\n f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416\n * [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423\nUpdating c3c8d86b22..68bb20c72a\nFast-forward\n Makefile | 5 +\n app/Component/Activity/Services/UpdateActivityService.php | 5 +\n app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-\n app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++\n app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +\n app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-\n app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-\n app/Component/ProphetAi/ProphetClient.php | 5 +\n app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++\n app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----\n app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++\n app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-\n app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-\n app/Console/Kernel.php | 4 +\n app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++\n app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-\n app/Contracts/Services/Crm/ServiceInterface.php | 29 ----\n app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-\n app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++\n app/Http/Controllers/API/CrmController.php | 19 ++-\n app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-\n app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-\n app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---\n app/Http/Controllers/Webhook/ReportController.php | 5 +\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-\n app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-\n app/Jobs/Activity/SyncActivity.php | 3 +-\n app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++\n app/Jobs/AutomatedReports/SendReportJob.php | 2 +\n app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-\n app/Jobs/Crm/SyncActivity.php | 10 ++\n app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++\n app/Jobs/Crm/SyncObjects.php | 26 ++--\n app/Jobs/Crm/SyncTeamMetadata.php | 14 +-\n app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++\n app/Listeners/Crm/ResolveOwner.php | 21 +--\n app/Mail/Reports/ReportWithAttachment.php | 7 +-\n app/Models/Ai/AiScorecardRuleRun.php | 4 +-\n app/Models/Ai/AiScorecardRun.php | 4 +-\n app/Models/Contracts/UserContract.php | 6 +\n app/Providers/EventServiceProvider.php | 4 +\n app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-\n app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++\n app/Services/Crm/BaseService.php | 13 --\n app/Services/Crm/Bullhorn/BullhornService.php | 21 ---\n app/Services/Crm/Close/Service.php | 38 -----\n app/Services/Crm/Copper/Service.php | 37 -----\n app/Services/Crm/Dummy/Service.php | 25 ----\n app/Services/Crm/Hubspot/Service.php | 37 -----\n app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------\n app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--\n app/Services/Crm/IntegrationApp/Service.php | 2 +\n app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-\n app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -\n app/Services/Crm/Pipedrive/Service.php | 43 +-----\n app/Services/Crm/Salesforce/Service.php | 13 +-\n app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++\n app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----\n front-end/package.json | 2 +-\n front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +\n front-end/src/components/AiReports/AiReports.vue | 9 +-\n front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---\n front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-\n front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--\n front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-\n front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++\n front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +\n front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-\n front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++\n front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---\n front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-\n front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-\n front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++\n front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +\n front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-\n front-end/src/components/AiReports/constants.js | 1 +\n front-end/src/components/AiReports/gridConfig.js | 2 +-\n front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++\n front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-\n front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-\n front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++\n front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-\n front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-\n front-end/src/components/shared/GridView/useOrder.js | 6 +-\n front-end/src/components/shared/GridView/usePaginationList.js | 7 +-\n front-end/yarn.lock | 8 +-\n resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++\n routes/api.php | 1 +\n tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++\n tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-\n tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------\n tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-\n tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-\n tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---\n tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-\n tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++\n tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----\n tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++\n tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----\n tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------\n tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -\n tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --\n tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--\n 113 files changed, 5468 insertions(+), 980 deletions(-)\n create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php\n create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php\n create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php\n create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php\n create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php\n create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php\n create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php\n create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php\n create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue\n create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js\n create mode 100644 front-end/src/components/AiReports/constants.js\n create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js\n create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js\n create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php\n create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php\n create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php\n create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php\n create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status\nOn branch JY-20372-ai-reports-promotion-pages\nYour branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.\n\nChanges not staged for commit:\n (use \"git add <file>...\" to update what will be committed)\n (use \"git restore <file>...\" to discard changes in working directory)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: .env.local\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Console/Commands/JiminnyDebugCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Controllers/API/ActivityController.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Http/Transformers/UserTransformer.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Jobs/Team/SyncToIntercom.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Repositories/AutomatedReportsRepository.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: app/Services/PlaybackService.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: config/logging.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tmodified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php\n\nUntracked files:\n (use \"git add <file>...\" to include in what will be committed)\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.nikilocal\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\t.env.other\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tWEBHOOK_FILTERING_IMPLEMENTATION.md\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tapp/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\tids.txt\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\traw_sql_query.sql\n\u0000\u0000\u0000\u0000\u0000\u0000\u0000\ttests/Unit/Policies/CanAccessAiReportsTest.php\n\nno changes added to commit (use \"git add\" and/or \"git commit -a\")\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n 1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)\n ---------- begin diff ----------\n--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php\n@@ -37,15 +37,14 @@\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n- ): void\n- {\n-// $user = User::find(143);\n-// $count = $automatedReportsRepository->countUserReports($user);\n-// $this->info(\"Count: {$count}\");\n-// $count = $automatedReportsRepository->countAllUserReports($user);\n-// $this->info(\"All count: {$count}\");\n-//\n-// exit(1);\n+ ): void {\n+ // $user = User::find(143);\n+ // $count = $automatedReportsRepository->countUserReports($user);\n+ // $this->info(\"Count: {$count}\");\n+ // $count = $automatedReportsRepository->countAllUserReports($user);\n+ // $this->info(\"All count: {$count}\");\n+ //\n+ // exit(1);\n \n $now = Carbon::now()->subDay(1);\n $this->info(\"Now: {$now->toDateTimeString()}\");\n@@ -52,18 +51,18 @@\n $weekStart = Carbon::getWeekStartsAt();\n $this->info(\"Now: {$weekStart}\");\n \n-// $from = $now->copy()->previousWeekday()->startOfDay();\n-// $to = $now->copy()->previousWeekday()->endOfDay();\n+ // $from = $now->copy()->previousWeekday()->startOfDay();\n+ // $to = $now->copy()->previousWeekday()->endOfDay();\n \n-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subWeek()->startOfWeek();\n-// $toNew = $now->copy()->subWeek()->endOfWeek();\n+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subWeek()->startOfWeek();\n+ // $toNew = $now->copy()->subWeek()->endOfWeek();\n \n-// $fromOld = $now->copy()->subMonths(1)->startOfDay();\n-// $toOld = $now->copy()->subDay()->endOfDay();\n-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();\n+ // $toOld = $now->copy()->subDay()->endOfDay();\n+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();\n+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();\n \n $fromOld = $now->copy()->subMonths(3)->startOfDay();\n $toOld = $now->copy()->subDay()->endOfDay();\n\n ----------- end diff -----------\n\n\nFixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 supervisorctl restart all\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: stopped\njiminny-worker-processing-2:jiminny-worker-processing-2_00: stopped\njiminny-worker-processing-3:jiminny-worker-processing-3_00: stopped\njiminny-worker-processing-4:jiminny-worker-processing-4_00: stopped\njiminny-worker-processing-5:jiminny-worker-processing-5_00: stopped\nworker-analytics:worker-analytics_00: stopped\nworker-crm-update:worker-crm-update_00: stopped\nworker-download:worker-download_00: stopped\nworker-nudges:worker-nudges_00: stopped\nartisan-schedule:artisan-schedule_00: stopped\nworker-calendar:worker-calendar_00: stopped\nworker-crm-sync:worker-crm-sync_00: stopped\nworker-emails:worker-emails_00: stopped\njiminny-worker-processing-1:jiminny-worker-processing-1_00: stopped\nworker:worker_00: stopped\nworker-conferences:worker-conferences_00: stopped\nworker-audio:worker-audio_00: stopped\nworker-es-update:worker-es-update_00: stopped\nartisan-schedule:artisan-schedule_00: started\njiminny-worker-processing-1:jiminny-worker-processing-1_00: started\njiminny-worker-processing-2:jiminny-worker-processing-2_00: started\njiminny-worker-processing-3:jiminny-worker-processing-3_00: started\njiminny-worker-processing-4:jiminny-worker-processing-4_00: started\njiminny-worker-processing-5:jiminny-worker-processing-5_00: started\njiminny-worker-processing-delayed:jiminny-worker-processing-delayed_00: started\nworker:worker_00: started\nworker-analytics:worker-analytics_00: started\nworker-audio:worker-audio_00: started\nworker-calendar:worker-calendar_00: started\nworker-conferences:worker-conferences_00: started\nworker-crm-sync:worker-crm-sync_00: started\nworker-crm-update:worker-crm-update_00: started\nworker-download:worker-download_00: started\nworker-emails:worker-emails_00: started\nworker-es-update:worker-es-update_00: started\nworker-nudges:worker-nudges_00: started\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\ndocker exec -it docker_lamp_1 php -v\nPHP 8.3.30 (cli) (built: Mar 16 2026 22:32:32) (NTS)\nCopyright (c) The PHP Group\nZend Engine v4.3.30, Copyright (c) Zend Technologies\n with Zend OPcache v8.3.30, Copyright (c), by Zend Technologies\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix\ndocker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff \nPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.\nPHP runtime: 8.3.30\nRunning analysis on 7 cores with 10 files per process.\nParallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!\nLoaded config default from \".php-cs-fixer.dist.php\".\n 5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%\n\n\nFixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ ;xd\ndocker exec -it docker_lamp_1 bash -c \"mv /usr/local/etc/php/conf.d/xdebug.ini ~/xdebug.ini\"\n\nWhat's next:\n Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1\n Learn more at https://docs.docker.com/go/debug-cli/\nError response from daemon: container 007d5da3af661f566add66deeffa5ffbc910c614e5890d03cc715d7e5b9d2d78 is not running\nmake: *** [docker-xdebug-disable] Error 1\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (docker)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45910904,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.46110374,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"ffmpeg","depth":2,"bounds":{"left":0.55352396,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5555186,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"sqlite3","depth":2,"bounds":{"left":0.64793885,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6499335,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"APP (-zsh)","depth":1,"bounds":{"left":0.49800533,"top":1.0,"width":0.024601065,"height":-0.02394259},"role_description":"text"}]...
|
-7923212814657071141
|
-1906223133490369957
|
idle
|
accessibility
|
NULL
|
Last login: Thu Apr 23 14:01:28 on ttys007
Poetry Last login: Thu Apr 23 14:01:28 on ttys007
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
Poetry could not find a pyproject.toml file in /Users/lukas/jiminny/app or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20157-AJ-report-not-send-notification
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git pull
remote: Enumerating objects: 1015, done.
remote: Counting objects: 100% (262/262), done.
remote: Compressing objects: 100% (143/143), done.
remote: Total 1015 (delta 167), reused 129 (delta 119), pack-reused 753 (from 3)
Receiving objects: 100% (1015/1015), 851.14 KiB | 2.09 MiB/s, done.
Resolving deltas: 100% (613/613), completed with 65 local objects.
From github.com:jiminny/app
c3c8d86b22..68bb20c72a JY-20372-ai-reports-promotion-pages -> origin/JY-20372-ai-reports-promotion-pages
3ac71c265a..595c95b7e0 JY-19995-delete-leftover-tracks-command -> origin/JY-19995-delete-leftover-tracks-command
* [new branch] JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null -> origin/JY-20352-sync-opportunities-without-a-local-owner-user-id-is-null
* [new branch] JY-20478-stop-sync-calendar-emails -> origin/JY-20478-stop-sync-calendar-emails
d4d05c775b..b11048beed JY-20541-cleanup-stale-tasks-and-events -> origin/JY-20541-cleanup-stale-tasks-and-events
10d290c778..a250abe939 JY-20663-partner-rockeed -> origin/JY-20663-partner-rockeed
* [new branch] JY-20713-activity-sync-job-restart -> origin/JY-20713-activity-sync-job-restart
242cf1b554..96a22e59f2 JY-9712-change-forever-nudges-to-1-year-expiration -> origin/JY-9712-change-forever-nudges-to-1-year-expiration
* [new branch] fix-close-missing-logger-error -> origin/fix-close-missing-logger-error
0dd5b23990..60fa1787c1 master -> origin/master
f044edca5b..e7e0e50b27 secfix/npm-20260416 -> origin/secfix/npm-20260416
* [new branch] secfix/npm-20260423 -> origin/secfix/npm-20260423
Updating c3c8d86b22..68bb20c72a
Fast-forward
Makefile | 5 +
app/Component/Activity/Services/UpdateActivityService.php | 5 +
app/Component/ActivitySearch/FilterDefinition/ActivityUpdatedDate.php | 7 +-
app/Component/ActivitySearch/Service/ActivitySearch.php | 15 ++
app/Component/AiCallScoring/Services/GenerateAiCallScoringService.php | 6 +
app/Component/AiCallScoring/Services/GetAiCallScoringService.php | 5 +-
app/Component/AiCallScoring/Transformers/AiCallScoringTransformer.php | 2 +-
app/Component/ProphetAi/ProphetClient.php | 5 +
app/Console/Commands/Crm/SyncHubspotObjects.php | 84 +++++++++++
app/Console/Commands/Crm/SyncObjects.php | 82 ++++++-----
app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php | 81 +++++++++++
app/Console/Commands/Reports/AutomatedReportsCommand.php | 91 +++++++++++-
app/Console/Commands/Reports/AutomatedReportsSendCommand.php | 40 +++++-
app/Console/Kernel.php | 4 +
app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php | 15 ++
app/Contracts/Services/Crm/Provider/SalesforceInterface.php | 12 +-
app/Contracts/Services/Crm/ServiceInterface.php | 29 ----
app/Contracts/Services/Crm/SyncCrmMetadataInterface.php | 6 +-
app/Events/AutomatedReports/AutomatedReportGenerated.php | 15 ++
app/Http/Controllers/API/CrmController.php | 19 ++-
app/Http/Controllers/API/UserAutomatedReports/UserAutomatedReportsController.php | 33 ++++-
app/Http/Controllers/Internal/WebhookReceiver/HubspotController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/EventsController.php | 2 +-
app/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTrait.php | 64 ++++++---
app/Http/Controllers/Webhook/ReportController.php | 5 +
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/CreateOrUpdateAiScorecardRuleRequest.php | 2 +-
app/Http/Requests/Settings/AiCallScoring/TestAiCallScoringPromptRequest.php | 2 +-
app/Jobs/Activity/SyncActivity.php | 3 +-
app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php | 210 ++++++++++++++++++++++++++++
app/Jobs/AutomatedReports/SendReportJob.php | 2 +
app/Jobs/AutomatedReports/SendReportMailJob.php | 6 +-
app/Jobs/Crm/SyncActivity.php | 10 ++
app/Jobs/Crm/SyncHubspotObjects.php | 120 ++++++++++++++++
app/Jobs/Crm/SyncObjects.php | 26 ++--
app/Jobs/Crm/SyncTeamMetadata.php | 14 +-
app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php | 82 +++++++++++
app/Listeners/Crm/ResolveOwner.php | 21 +--
app/Mail/Reports/ReportWithAttachment.php | 7 +-
app/Models/Ai/AiScorecardRuleRun.php | 4 +-
app/Models/Ai/AiScorecardRun.php | 4 +-
app/Models/Contracts/UserContract.php | 6 +
app/Providers/EventServiceProvider.php | 4 +
app/Repositories/AutomatedReportsRepository.php | 76 +++++++++-
app/Repositories/Crm/CrmEntityRepository.php | 40 ++++++
app/Services/Crm/BaseService.php | 13 --
app/Services/Crm/Bullhorn/BullhornService.php | 21 ---
app/Services/Crm/Close/Service.php | 38 -----
app/Services/Crm/Copper/Service.php | 37 -----
app/Services/Crm/Dummy/Service.php | 25 ----
app/Services/Crm/Hubspot/Service.php | 37 -----
app/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTrait.php | 174 +++++++++++++++++------
app/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTrait.php | 27 ++--
app/Services/Crm/IntegrationApp/Service.php | 2 +
app/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTrait.php | 12 +-
app/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTrait.php | 5 -
app/Services/Crm/Pipedrive/Service.php | 43 +-----
app/Services/Crm/Salesforce/Service.php | 13 +-
app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php | 143 +++++++++++++++++++
app/Services/Kiosk/AutomatedReports/AutomatedReportsService.php | 222 +++++++++++++++++++++++++----
front-end/package.json | 2 +-
front-end/src/__mocks__/kit/endpoints/team-insights.js | 1 +
front-end/src/components/AiReports/AiReports.vue | 9 +-
front-end/src/components/AiReports/GridCells/ActionsCell.vue | 107 +++++++++++---
front-end/src/components/AiReports/GridCells/NameCell.vue | 13 +-
front-end/src/components/AiReports/GridCells/TypeIndicator.vue | 26 ++--
front-end/src/components/AiReports/Manage/CreateDefinition/CreateDefinitionDrawer.vue | 4 +-
front-end/src/components/AiReports/Manage/ExpiringCell.vue | 86 ++++++++++++
front-end/src/components/AiReports/Manage/ManageAiReports.less | 6 +
front-end/src/components/AiReports/Manage/ManageAiReports.vue | 6 +-
front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js | 116 +++++++++++++++
front-end/src/components/AiReports/Manage/__tests__/ManageAiReports.spec.js | 32 +++--
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/create-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/edit-definition-drawer.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/__tests__/__snapshots__/manage-ai-reports.output.html | 83 ++++++++---
front-end/src/components/AiReports/Manage/gridConfig.js | 12 +-
front-end/src/components/AiReports/__tests__/AiReports.spec.js | 45 +++++-
front-end/src/components/AiReports/__tests__/__mocks__/data.js | 49 +++++++
front-end/src/components/AiReports/__tests__/__mocks__/requestHandlers.js | 3 +
front-end/src/components/AiReports/__tests__/__snapshots__/ai-reports.output.html | 319 +++++++++++++++++++++++++++++++++++++++++-
front-end/src/components/AiReports/constants.js | 1 +
front-end/src/components/AiReports/gridConfig.js | 2 +-
front-end/src/components/AiReports/useAiReportsGrid.js | 27 ++++
front-end/src/components/Settings/Kiosk/AutomatedReports/RecipientsCell.vue | 36 ++++-
front-end/src/components/Settings/Kiosk/AutomatedReports/UsersCell.vue | 9 +-
front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js | 171 ++++++++++++++++++++++
front-end/src/components/Settings/OrgSettings/AiAutomation/CallScoring/ScorecardRuleForm.vue | 2 +-
front-end/src/components/TeamInsights/CoachingFrameworks/AICallScoring/aiCallScoringOverTime.ts | 18 ++-
front-end/src/components/shared/GridView/useOrder.js | 6 +-
front-end/src/components/shared/GridView/usePaginationList.js | 7 +-
front-end/yarn.lock | 8 +-
resources/views/emails/reports/ask-jiminny-report-generated.blade.php | 25 ++++
routes/api.php | 1 +
tests/Unit/Component/Activity/Services/UpdateActivityServiceTest.php | 62 ++++++++
tests/Unit/Component/AiCallScoring/Services/GenerateAiCallScoringServiceTest.php | 13 +-
tests/Unit/Console/Commands/Reports/AutomatedReportsCommandTest.php | 468 ++++++++++++++++++++++++++++++++++++++++++-------------------
tests/Unit/Http/Controllers/Webhook/Hubspot/ProcessesWebhooksTraitTest.php | 5 +-
tests/Unit/Http/Controllers/Webhook/ReportControllerTest.php | 9 +-
tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php | 407 +++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncActivityTest.php | 74 +++++++---
tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php | 455 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Jobs/Crm/SyncTeamMetadataTest.php | 8 +-
tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php | 199 ++++++++++++++++++++++++++
tests/Unit/Listeners/Crm/ResolveOwnerTest.php | 64 ++++-----
tests/Unit/Repositories/AutomatedReportsRepositoryTest.php | 55 ++++++++
tests/Unit/Services/Crm/Copper/ServiceTest.php | 19 ---
tests/Unit/Services/Crm/Hubspot/ServiceTraits/OpportunitySyncTest.php | 74 ++++++----
tests/Unit/Services/Crm/Hubspot/ServiceTraits/SyncCrmEntitiesTraitTest.php | 8 +-
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/NotSupportedTraitTest.php | 76 ++--------
tests/Unit/Services/Crm/IntegrationApp/ServiceTraits/SyncCrmMetadataTraitTest.php | 5 -
tests/Unit/Services/Crm/Pipedrive/ServiceTest.php | 11 --
tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php | 430 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceTest.php | 521 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
113 files changed, 5468 insertions(+), 980 deletions(-)
create mode 100644 app/Console/Commands/Crm/SyncHubspotObjects.php
create mode 100644 app/Console/Commands/Crm/Traits/SyncObjectsCommandTrait.php
create mode 100644 app/Contracts/Services/Crm/ImportsBusinessProcessesInterface.php
create mode 100644 app/Events/AutomatedReports/AutomatedReportGenerated.php
create mode 100644 app/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJob.php
create mode 100644 app/Jobs/Crm/SyncHubspotObjects.php
create mode 100644 app/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEvent.php
create mode 100644 app/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityService.php
create mode 100644 front-end/src/components/AiReports/Manage/ExpiringCell.vue
create mode 100644 front-end/src/components/AiReports/Manage/__tests__/ExpiringCell.spec.js
create mode 100644 front-end/src/components/AiReports/constants.js
create mode 100644 front-end/src/components/AiReports/useAiReportsGrid.js
create mode 100644 front-end/src/components/Settings/Kiosk/AutomatedReports/__tests__/RecipientsCell.spec.js
create mode 100644 resources/views/emails/reports/ask-jiminny-report-generated.blade.php
create mode 100644 tests/Unit/Jobs/AutomatedReports/RequestGenerateAskJiminnyReportJobTest.php
create mode 100644 tests/Unit/Jobs/Crm/SyncHubspotObjectsTest.php
create mode 100644 tests/Unit/Listeners/AutomatedReports/UserPilot/TrackAutomatedReportGeneratedEventTest.php
create mode 100644 tests/Unit/Services/Kiosk/AutomatedReports/AskJiminnyReportActivityServiceTest.php
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ git status
On branch JY-20372-ai-reports-promotion-pages
Your branch is up to date with 'origin/JY-20372-ai-reports-promotion-pages'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git restore <file>..." to discard changes in working directory)
modified: .env.local
modified: app/Console/Commands/JiminnyDebugCommand.php
modified: app/Http/Controllers/API/ActivityController.php
modified: app/Http/Transformers/UserTransformer.php
modified: app/Jobs/Team/SyncToIntercom.php
modified: app/Repositories/AutomatedReportsRepository.php
modified: app/Services/PlaybackService.php
modified: config/logging.php
modified: tests/Unit/Repositories/AutomatedReportsRepositoryTest.php
Untracked files:
(use "git add <file>..." to include in what will be committed)
.env.nikilocal
.env.other
WEBHOOK_FILTERING_IMPLEMENTATION.md
app/Console/Commands/Crm/Hubspot/SimulateWebhooksCommand.php
app/Console/Commands/Reports/CreateMockAskJiminnyReportResultCommand.php
ids.txt
raw_sql_query.sql
tests/Unit/Policies/CanAccessAiReportsTest.php
no changes added to commit (use "git add" and/or "git commit -a")
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5613/5613 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
1) app/Console/Commands/JiminnyDebugCommand.php (braces_position, statement_indentation)
---------- begin diff ----------
--- /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
+++ /home/jiminny/app/Console/Commands/JiminnyDebugCommand.php
@@ -37,15 +37,14 @@
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
- ): void
- {
-// $user = User::find(143);
-// $count = $automatedReportsRepository->countUserReports($user);
-// $this->info("Count: {$count}");
-// $count = $automatedReportsRepository->countAllUserReports($user);
-// $this->info("All count: {$count}");
-//
-// exit(1);
+ ): void {
+ // $user = User::find(143);
+ // $count = $automatedReportsRepository->countUserReports($user);
+ // $this->info("Count: {$count}");
+ // $count = $automatedReportsRepository->countAllUserReports($user);
+ // $this->info("All count: {$count}");
+ //
+ // exit(1);
$now = Carbon::now()->subDay(1);
$this->info("Now: {$now->toDateTimeString()}");
@@ -52,18 +51,18 @@
$weekStart = Carbon::getWeekStartsAt();
$this->info("Now: {$weekStart}");
-// $from = $now->copy()->previousWeekday()->startOfDay();
-// $to = $now->copy()->previousWeekday()->endOfDay();
+ // $from = $now->copy()->previousWeekday()->startOfDay();
+ // $to = $now->copy()->previousWeekday()->endOfDay();
-// $fromOld = $now->copy()->subWeeks(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subWeek()->startOfWeek();
-// $toNew = $now->copy()->subWeek()->endOfWeek();
+ // $fromOld = $now->copy()->subWeeks(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subWeek()->startOfWeek();
+ // $toNew = $now->copy()->subWeek()->endOfWeek();
-// $fromOld = $now->copy()->subMonths(1)->startOfDay();
-// $toOld = $now->copy()->subDay()->endOfDay();
-// $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
-// $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
+ // $fromOld = $now->copy()->subMonths(1)->startOfDay();
+ // $toOld = $now->copy()->subDay()->endOfDay();
+ // $fromNew = $now->copy()->subMonthNoOverflow()->startOfMonth();
+ // $toNew = $now->copy()->subMonthNoOverflow()->endOfMonth();
$fromOld = $now->copy()->subMonths(3)->startOfDay();
$toOld = $now->copy()->subDay()->endOfDay();
----------- end diff -----------
Fixed 1 of 5613 files in 66.818 seconds, 67.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ csfix
docker exec -it docker_lamp_1 ./vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.dist.php -v --using-cache=no --diff
PHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski and contributors.
PHP runtime: 8.3.30
Running analysis on 7 cores with 10 files per process.
Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!
Loaded config default from ".php-cs-fixer.dist.php".
5616/5616 [▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓] 100%
Fixed 0 of 5616 files in 65.183 seconds, 60.00 MB memory used
What's next:
Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug docker_lamp_1
Learn more at [URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $
DOCKER
Close Tab
DEV (docker)
Close Tab
APP (-zsh)
Close Tab
ffmpeg
Close Tab
sqlite3
Close Tab
⌥⌘1
APP (-zsh)...
|
NULL
|
|
75494
|
NULL
|
0
|
2026-04-24T06:31:03.671418+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012263671_m2.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 23 14:01:29 on ttys009
Poetry Last login: Thu Apr 23 14:01:29 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 23 14:01:29 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.4800532,"height":-0.06304872},"value":"Last login: Thu Apr 23 14:01:29 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.27227393,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.36469415,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.36668882,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.45910904,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.46110374,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.55352396,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.5555186,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.64793885,"top":1.0,"width":0.0944149,"height":-0.042298436},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.6499335,"top":1.0,"width":0.005319149,"height":-0.04549086},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.7287234,"top":1.0,"width":0.01861702,"height":-0.023144484},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.5046542,"top":1.0,"width":0.010970744,"height":-0.02394259},"role_description":"text"}]...
|
-2475439445148030469
|
-4070244509060381671
|
click
|
accessibility
|
NULL
|
Last login: Thu Apr 23 14:01:29 on ttys009
Poetry Last login: Thu Apr 23 14:01:29 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
NULL
|
|
75493
|
NULL
|
0
|
2026-04-24T06:31:03.662723+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777012263662_m1.jpg...
|
iTerm2
|
-zsh
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Last login: Thu Apr 23 14:01:29 on ttys009
Poetry Last login: Thu Apr 23 14:01:29 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"Last login: Thu Apr 23 14:01:29 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23","depth":4,"bounds":{"left":0.0,"top":0.08777778,"width":1.0,"height":0.9122222},"value":"Last login: Thu Apr 23 14:01:29 on ttys009\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23","is_focused":true},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.39444444,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3986111,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.59166664,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.59583336,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7888889,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.79305553,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"-zsh","depth":1,"bounds":{"left":0.48958334,"top":0.033333335,"width":0.022916667,"height":0.017777778},"role_description":"text"}]...
|
-2475439445148030469
|
-4070244509060381671
|
click
|
accessibility
|
NULL
|
Last login: Thu Apr 23 14:01:29 on ttys009
Poetry Last login: Thu Apr 23 14:01:29 on ttys009
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
Poetry could not find a pyproject.toml file in /Users/lukas or its parents
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ ~/.screenpipe/screenpipe_sync.sh 2026-04-23
DOCKER
Close Tab
DEV (-zsh)
Close Tab
APP (-zsh)
Close Tab
screenpipe"
Close Tab
-zsh
Close Tab
⌥⌘1
-zsh...
|
75491
|
|
75413
|
NULL
|
0
|
2026-04-24T06:26:04.061319+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011964061_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75411
|
|
75412
|
NULL
|
0
|
2026-04-24T06:26:00.527980+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011960527_m2.jpg...
|
PhpStorm
|
faVsco.js – AutomatedReportsServiceActivitiesCount faVsco.js – AutomatedReportsServiceActivitiesCountTest.php...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#12011 on JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #12011 exists for current branch JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8218085,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsServiceTest","depth":6,"bounds":{"left":0.83710104,"top":0.019952115,"width":0.078457445,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.36236703,"top":0.32801276,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.375,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"testGetActivitiesCountPayloadWithWeeklyFrequency","depth":4,"bounds":{"left":0.38597074,"top":0.3272147,"width":0.10837766,"height":0.015961692},"value":"testGetActivitiesCountPayloadWithWeeklyFrequency","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.50332445,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.51329786,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.5219415,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.5305851,"top":0.3272147,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.54421544,"top":0.3264166,"width":0.025598405,"height":0.017557861},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.56981385,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.5784575,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.58710104,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"bounds":{"left":0.59574467,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"bounds":{"left":0.60638297,"top":0.3256185,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.59541225,"top":0.3567438,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.6050532,"top":0.35514766,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.61236703,"top":0.35514766,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","depth":4,"bounds":{"left":0.3799867,"top":0.17877094,"width":0.2393617,"height":0.82122904},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse DateTimeInterface;\nuse Illuminate\\Contracts\\Bus\\Dispatcher as BusDispatcher;\nuse Illuminate\\Support\\Carbon;\nuse Jiminny\\Component\\UrlGenerator\\Webhook;\nuse Jiminny\\Contracts\\Repositories\\PlaybookCategoryRepository;\nuse Jiminny\\Contracts\\Repositories\\TeamRepository;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\Group;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Repositories\\GroupRepository;\nuse Jiminny\\Repositories\\StageRepository;\nuse Jiminny\\Repositories\\UserRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\ActivityTypeService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\DealStagesService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\RecipientsService;\nuse Jiminny\\Component\\AskAnything\\AskAnythingPromptService;\nuse Jiminny\\Repositories\\SearchRepository;\nuse Jiminny\\Repositories\\AskAnythingRepository;\nuse Tests\\TestCase;\nuse Tests\\Unit\\Traits\\TestPrivateMethod;\n\nclass AutomatedReportsServiceActivitiesCountTest extends TestCase\n{\n use TestPrivateMethod;\n\n private AutomatedReportsService $service;\n private Group $group;\n\n protected function setUp(): void\n {\n parent::setUp();\n\n // Create a mock team\n $team = $this->createMock(Team::class);\n $team->method('getId')->willReturn(123);\n $team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');\n $team->method('hasFeature')\n ->with(FeatureEnum::AUTOMATED_REPORTS)\n ->willReturn(true);\n\n // Create a mock group\n $this->group = $this->createMock(Group::class);\n $this->group->method('getId')->willReturn(1);\n $this->group->method('getTeamId')->willReturn(123);\n\n // Create mocks for dependencies\n $teamRepository = $this->createMock(TeamRepository::class);\n $teamRepository->method('idOrUuid')\n ->willReturn($team);\n\n $groupRepository = $this->createMock(GroupRepository::class);\n $groupRepository->method('findByUuid')\n ->willReturnCallback(function ($uuid) {\n if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {\n return $this->group;\n }\n\n return null;\n });\n\n $userRepository = $this->createMock(UserRepository::class);\n $stageRepository = $this->createMock(StageRepository::class);\n $dealStagesService = $this->createMock(DealStagesService::class);\n $recipientsService = $this->createMock(RecipientsService::class);\n $automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);\n $webhookService = $this->createMock(Webhook::class);\n $dispatcher = $this->createMock(BusDispatcher::class);\n $activityTypeService = $this->createMock(ActivityTypeService::class);\n $playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);\n\n // Create a real service instance with mocked dependencies\n $this->service = new AutomatedReportsService(\n $teamRepository,\n $groupRepository,\n $userRepository,\n $stageRepository,\n $dealStagesService,\n $recipientsService,\n $automatedReportsRepository,\n $webhookService,\n $dispatcher,\n $activityTypeService,\n $playbookCategoryRepository,\n $this->createMock(AskAnythingPromptService::class),\n $this->createMock(SearchRepository::class),\n $this->createMock(AskAnythingRepository::class),\n );\n }\n\n public function testGetActivitiesCountPayloadWithOneOffFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up input payload with one_off frequency and explicit date range\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'one_off',\n 'start_date_period' => '2025-07-20 00:00:00',\n 'end_date_period' => '2025-07-30 00:00:00',\n 'call_type' => ['conference'],\n 'media_types' => ['pdf'],\n 'min_call_duration' => 15,\n 'max_call_duration' => 120,\n 'min_deal_value' => 5000,\n 'max_deal_value' => 50000,\n 'additional_prompt_input' => 'Custom Prompt',\n ];\n\n // Call the method directly\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result contains the expected fields\n $this->assertArrayHasKey('team_id', $result);\n $this->assertArrayHasKey('report_type', $result);\n $this->assertArrayHasKey('from_date', $result);\n $this->assertArrayHasKey('to_date', $result);\n $this->assertArrayHasKey('call_types', $result);\n $this->assertArrayHasKey('call_duration_min_seconds', $result);\n $this->assertArrayHasKey('call_duration_max_seconds', $result);\n $this->assertArrayHasKey('deal_min_value', $result);\n $this->assertArrayHasKey('deal_max_value', $result);\n $this->assertArrayHasKey('special_requirements', $result);\n\n // Assert specific values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals(['conference'], $result['call_types']);\n $this->assertEquals(15 * 60, $result['call_duration_min_seconds']);\n $this->assertEquals(120 * 60, $result['call_duration_max_seconds']);\n $this->assertEquals(5000, $result['deal_min_value']);\n $this->assertEquals(50000, $result['deal_max_value']);\n $this->assertEquals('Custom Prompt', $result['special_requirements']);\n\n // Verify date formats (RFC3339)\n $fromDate = Carbon::parse('2025-07-20 00:00:00');\n $toDate = Carbon::parse('2025-07-30 00:00:00');\n $this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);\n $this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);\n }\n\n public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with weekly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'weekly',\n 'call_type' => ['conference', 'dialer'],\n 'media_types' => ['pdf', 'podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Get the expected date range for weekly frequency\n // Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()\n $now = Carbon::now();\n $fromDate = $now->copy()->subWeeks(1)->startOfDay();\n $toDate = $now->copy()->subDay()->endOfDay();\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n $this->assertEquals(['conference', 'dialer'], $result['call_types']);\n $this->assertEquals([], $result['call_deal_stage']);\n $this->assertEquals([], $result['current_deal_stage']);\n $this->assertNull($result['deal_min_value']);\n $this->assertNull($result['deal_max_value']);\n $this->assertNull($result['call_duration_min_seconds']);\n $this->assertNull($result['call_duration_max_seconds']);\n $this->assertNull($result['special_requirements']);\n $this->assertNull($result['request_id']);\n $this->assertNull($result['callback_url']);\n\n // Check exact dates with full calendar days\n $this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);\n $this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);\n\n Carbon::setTestNow();\n }\n\n public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void\n {\n // Freeze time for predictable date handling\n Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));\n\n // Set up minimal input payload with monthly frequency\n $inputPayload = [\n 'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',\n 'report_enabled' => true,\n 'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],\n 'report_type' => 'exec_summary',\n 'frequency' => 'monthly',\n 'media_types' => ['podcast'],\n ];\n\n // Call the method\n $result = $this->service->getActivitiesCountPayload($inputPayload);\n\n // Assert the result has expected values\n $this->assertEquals(123, $result['team_id']);\n $this->assertEquals('exec_summary', $result['report_type']);\n $this->assertEquals([1], $result['group_ids']);\n\n // Check that dates are in RFC3339 format\n // Use assertStringStartsWith to avoid exact timestamp comparison issues\n $this->assertStringStartsWith('2025-07', $result['from_date']);\n $this->assertStringStartsWith('2025-08-11', $result['to_date']);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","depth":4,"bounds":{"left":0.63863033,"top":0.09736632,"width":0.36136967,"height":0.90263367},"value":"There were 8 failures:\n\n1) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-08-05T00:00:00+00:00'\n+'2025-08-03T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194\n\n2) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency\nFailed asserting that '2025-07-31T23:59:59+00:00' starts with \"2025-08-11\".\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226\n\n3) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-02-08 00:00:00'\n+'2023-02-05 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180\n\n4) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2023-01-15 00:00:00'\n+'2023-01-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205\n\n5) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2022-11-15 00:00:00'\n+'2022-10-01 00:00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230\n\n6) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2026-01-13T00:00:00+00:00'\n+'2026-01-11T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778\n\n7) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-12-20T00:00:00+00:00'\n+'2025-12-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816\n\n8) Tests\\Unit\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays\nFailed asserting that two strings are equal.\n--- Expected\n+++ Actual\n@@ @@\n-'2025-10-20T00:00:00+00:00'\n+'2025-10-01T00:00:00+00:00'\n\n/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854\n\nFAILURES!\nTests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8529419538052703508
|
-4548835565073994901
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#12011 on JY-20157-AJ-rep Project: faVsco.js, menu
#12011 on JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
AutomatedReportsServiceTest
Run 'AutomatedReportsServiceTest'
Debug 'AutomatedReportsServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Show Replace Field
Search History
testGetActivitiesCountPayloadWithWeeklyFrequency
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use DateTimeInterface;
use Illuminate\Contracts\Bus\Dispatcher as BusDispatcher;
use Illuminate\Support\Carbon;
use Jiminny\Component\UrlGenerator\Webhook;
use Jiminny\Contracts\Repositories\PlaybookCategoryRepository;
use Jiminny\Contracts\Repositories\TeamRepository;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\Group;
use Jiminny\Models\Team;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Repositories\GroupRepository;
use Jiminny\Repositories\StageRepository;
use Jiminny\Repositories\UserRepository;
use Jiminny\Services\Kiosk\AutomatedReports\ActivityTypeService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\Services\Kiosk\AutomatedReports\DealStagesService;
use Jiminny\Services\Kiosk\AutomatedReports\RecipientsService;
use Jiminny\Component\AskAnything\AskAnythingPromptService;
use Jiminny\Repositories\SearchRepository;
use Jiminny\Repositories\AskAnythingRepository;
use Tests\TestCase;
use Tests\Unit\Traits\TestPrivateMethod;
class AutomatedReportsServiceActivitiesCountTest extends TestCase
{
use TestPrivateMethod;
private AutomatedReportsService $service;
private Group $group;
protected function setUp(): void
{
parent::setUp();
// Create a mock team
$team = $this->createMock(Team::class);
$team->method('getId')->willReturn(123);
$team->method('getUuid')->willReturn('6473c918-d8db-4ded-a52b-4febfd7b7c02');
$team->method('hasFeature')
->with(FeatureEnum::AUTOMATED_REPORTS)
->willReturn(true);
// Create a mock group
$this->group = $this->createMock(Group::class);
$this->group->method('getId')->willReturn(1);
$this->group->method('getTeamId')->willReturn(123);
// Create mocks for dependencies
$teamRepository = $this->createMock(TeamRepository::class);
$teamRepository->method('idOrUuid')
->willReturn($team);
$groupRepository = $this->createMock(GroupRepository::class);
$groupRepository->method('findByUuid')
->willReturnCallback(function ($uuid) {
if ($uuid === '0cdece0a-7b12-49ae-8b7e-366bbb6d42d2') {
return $this->group;
}
return null;
});
$userRepository = $this->createMock(UserRepository::class);
$stageRepository = $this->createMock(StageRepository::class);
$dealStagesService = $this->createMock(DealStagesService::class);
$recipientsService = $this->createMock(RecipientsService::class);
$automatedReportsRepository = $this->createMock(AutomatedReportsRepository::class);
$webhookService = $this->createMock(Webhook::class);
$dispatcher = $this->createMock(BusDispatcher::class);
$activityTypeService = $this->createMock(ActivityTypeService::class);
$playbookCategoryRepository = $this->createMock(PlaybookCategoryRepository::class);
// Create a real service instance with mocked dependencies
$this->service = new AutomatedReportsService(
$teamRepository,
$groupRepository,
$userRepository,
$stageRepository,
$dealStagesService,
$recipientsService,
$automatedReportsRepository,
$webhookService,
$dispatcher,
$activityTypeService,
$playbookCategoryRepository,
$this->createMock(AskAnythingPromptService::class),
$this->createMock(SearchRepository::class),
$this->createMock(AskAnythingRepository::class),
);
}
public function testGetActivitiesCountPayloadWithOneOffFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up input payload with one_off frequency and explicit date range
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'one_off',
'start_date_period' => '2025-07-20 00:00:00',
'end_date_period' => '2025-07-30 00:00:00',
'call_type' => ['conference'],
'media_types' => ['pdf'],
'min_call_duration' => 15,
'max_call_duration' => 120,
'min_deal_value' => 5000,
'max_deal_value' => 50000,
'additional_prompt_input' => 'Custom Prompt',
];
// Call the method directly
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result contains the expected fields
$this->assertArrayHasKey('team_id', $result);
$this->assertArrayHasKey('report_type', $result);
$this->assertArrayHasKey('from_date', $result);
$this->assertArrayHasKey('to_date', $result);
$this->assertArrayHasKey('call_types', $result);
$this->assertArrayHasKey('call_duration_min_seconds', $result);
$this->assertArrayHasKey('call_duration_max_seconds', $result);
$this->assertArrayHasKey('deal_min_value', $result);
$this->assertArrayHasKey('deal_max_value', $result);
$this->assertArrayHasKey('special_requirements', $result);
// Assert specific values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals(['conference'], $result['call_types']);
$this->assertEquals(15 * 60, $result['call_duration_min_seconds']);
$this->assertEquals(120 * 60, $result['call_duration_max_seconds']);
$this->assertEquals(5000, $result['deal_min_value']);
$this->assertEquals(50000, $result['deal_max_value']);
$this->assertEquals('Custom Prompt', $result['special_requirements']);
// Verify date formats (RFC3339)
$fromDate = Carbon::parse('2025-07-20 00:00:00');
$toDate = Carbon::parse('2025-07-30 00:00:00');
$this->assertEquals($fromDate->format(DateTimeInterface::RFC3339), $result['from_date']);
$this->assertEquals($toDate->format(DateTimeInterface::RFC3339), $result['to_date']);
}
public function testGetActivitiesCountPayloadWithWeeklyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with weekly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'weekly',
'call_type' => ['conference', 'dialer'],
'media_types' => ['pdf', 'podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Get the expected date range for weekly frequency
// Weekly: subWeeks(1).startOfDay() to subDay().endOfDay()
$now = Carbon::now();
$fromDate = $now->copy()->subWeeks(1)->startOfDay();
$toDate = $now->copy()->subDay()->endOfDay();
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
$this->assertEquals(['conference', 'dialer'], $result['call_types']);
$this->assertEquals([], $result['call_deal_stage']);
$this->assertEquals([], $result['current_deal_stage']);
$this->assertNull($result['deal_min_value']);
$this->assertNull($result['deal_max_value']);
$this->assertNull($result['call_duration_min_seconds']);
$this->assertNull($result['call_duration_max_seconds']);
$this->assertNull($result['special_requirements']);
$this->assertNull($result['request_id']);
$this->assertNull($result['callback_url']);
// Check exact dates with full calendar days
$this->assertEquals('2025-08-05T00:00:00+00:00', $result['from_date']);
$this->assertEquals('2025-08-11T23:59:59+00:00', $result['to_date']);
Carbon::setTestNow();
}
public function testGetActivitiesCountPayloadWithMonthlyFrequency(): void
{
// Freeze time for predictable date handling
Carbon::setTestNow(Carbon::parse('2025-08-12 18:30:00'));
// Set up minimal input payload with monthly frequency
$inputPayload = [
'organization' => '6473c918-d8db-4ded-a52b-4febfd7b7c02',
'report_enabled' => true,
'teams' => ['0cdece0a-7b12-49ae-8b7e-366bbb6d42d2'],
'report_type' => 'exec_summary',
'frequency' => 'monthly',
'media_types' => ['podcast'],
];
// Call the method
$result = $this->service->getActivitiesCountPayload($inputPayload);
// Assert the result has expected values
$this->assertEquals(123, $result['team_id']);
$this->assertEquals('exec_summary', $result['report_type']);
$this->assertEquals([1], $result['group_ids']);
// Check that dates are in RFC3339 format
// Use assertStringStartsWith to avoid exact timestamp comparison issues
$this->assertStringStartsWith('2025-07', $result['from_date']);
$this->assertStringStartsWith('2025-08-11', $result['to_date']);
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
There were 8 failures:
1) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-08-05T00:00:00+00:00'
+'2025-08-03T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:194
2) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceActivitiesCountTest::testGetActivitiesCountPayloadWithMonthlyFrequency
Failed asserting that '2025-07-31T23:59:59+00:00' starts with "2025-08-11".
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceActivitiesCountTest.php:226
3) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithWeeklyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-02-08 00:00:00'
+'2023-02-05 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:180
4) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithMonthlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2023-01-15 00:00:00'
+'2023-01-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:205
5) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testCalculateFromAndToDateWithQuarterlyFrequency
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2022-11-15 00:00:00'
+'2022-10-01 00:00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:230
6) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithWeeklyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2026-01-13T00:00:00+00:00'
+'2026-01-11T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:778
7) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-12-20T00:00:00+00:00'
+'2025-12-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:816
8) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDays
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'2025-10-20T00:00:00+00:00'
+'2025-10-01T00:00:00+00:00'
/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest.php:854
FAILURES!
Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skipped: 51, Incomplete: 65.
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
75410
|
|
75361
|
NULL
|
0
|
2026-04-24T06:20:54.017433+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011654017_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMSActivityMoreDocker DeskLopJiminny…..~# c-learni DMSActivityMoreDocker DeskLopJiminny…..~# c-learning-peopie# confusion-clinic# curiosity_lab# deal-insights-dev# engineering# frontend# general# infra-changes# jiminny-bg8 people-with-copilo...8 people-with-zoom-...# platform-team# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi.... Direct messagesf. Stefka Stoyanova. Adelina Petrova€. Vasil Vasilev8. Stoyan Tomov. Galya DimitrovaAneliya Angelova,...P. Nikolav YankovQ Describe what you are looking for# engineering8 24Messagest Canvase FilesMoreAdelina Petromey team. below is the recording from today sUserpilot intro session if you'd like to review it.t vou nave anv questons, lust let me know.https://app.jiminny.com/playback/7bb1742e-a340-4042-8081-3c5b00t1e100Desis av Damvanov 12.58PMTeam should live coaching work on Staging?The bot joins but, the session won't appear inthe platform1 reply 20 hours agoCircleCI APP 8:54 AM1 PR with vulnerability fixes is ready for reviewPlease take a look at the code and conhrm thatieverything works properly on your localmachine or on a planet environmentPull requests (jiminny/app)• #12005 hx(security): npm dependencyupdates - 2026-04-23 (secfix/прm-20260423)Message #engineering+ AalProject~FV favsco.js v#12011 on JY-20157-AJ-report-not-send-notification+êx:.© TrackAutomatedReportGeneratedEventTest.php> D OpportunitySyncStrategy© AutomatedReportsCommandTest.php› I ProspectSearchStrategy> D ServiceTraitsC AutomatedReportsServiceTest.php x© ClientTest.phpC RequestGenerateAskJiminnyReportJob.png© DecorateActivityTest.php© SendReportNotGeneratedMailJobTest.php© ReportNotGeneratedTest.php© TrackAutomatedReportGeneratedEvent.phpAutomateakeporscommana.ong© AskJiminnyReportActivityServiceTest.php© AskJiminnyReportActivityService.phpAutomateakeporisservice.pnp© SendReportNotGeneratedMailJob.phg© senareportmallJob.php© ReportWithAttachment.php©) RequestGenerateAskJimoortJoblest.onp© SendReportMailJobTest.php©)AisummarycreatedListener.phg© CreateDialerActivityEvent.phpc) Createnudqecreatedevent.ono© DeleteObjectsTraitTest.php© FieldDefinitionsTest.phpC) CreateActivityLoqqedEvent.phoC) TrackProviderInstalledEvent.phpC) UserPilotActivityListener.phpC) UserPilotClient.phpC) PlanhatactivityListener.phpphp api v2.phpC GetActivityFieldNameTest.ph@ PayloadBuilderTest.phpwuerysullderlest.ong<?phpmly docker.desktop PERSONALQ Search© QueryHandlerTest.phpdeclare (strc) Querviteratorl est.onpC QueryResultsTests.phpc) service l est.oho© SyncBatchRedisServiceTest./•use ...Ask Gordon BETAContainersImagesContainersGive feedbackC BaseServiceTest.php© CachedCrmServiceDecoratorTe:Container CPU usage ONo containers are running.Container memory usage ©No containers are running.45 %class Autorc) CrmActivityServiceTest.ono© CrmConfigurationSettingsServic(c) crmobiectsResolverllest.ono© DefaultProspectSearchStrategy*80 usagprivatoVolumesKubernetesBuildsQ SearchOnly show runnina containersEmailHelperTest.phpNameModelsContainer IDImagePort(s)C* FieldValueConverter Test,php49 0t >protecMCp Toolkit BET.cLavoutManaderTest.ohoC MigrateProviderService Test.php82 0 >protecredis1229ffe7ed37© Opportunity ActivityMatcherTestDocker Hubkibanaredis:56379:6379kibana/kibana:7.10.2 5601:5601© OpportunitySyncStrategyResolv22 usageorivatDocker scoutC ProspectCacheTest.phpnarokC ProspectSearchStrategyFactoryExtensionsSmr: Autblackfire-1ДаI 7c3ес7911304AAN 00a86edb2f8df3fa652b70544040:4040blackfire/blackfire: 1/ 8707:8707© ProviderRegistryTest.php© RecordSelectorTest.phpManageuminny ext- 68/5460803e0C ResolveCompanyNameByEmailT© TimePerioditeratorTest.php© UpdateCrmDataResolverTest.ph1 Resource usageelasticsearch e802ad473a4f9200:9200Show all ports. (2).> D Internal#|Datalpublicdatadog-10727542fa222datadog/agent:6.12.v D Kioskv D AutomatedReports124 8 >publicmariadb-1b7e64079c3c3mariadb:11.4.53306:3306© ActivityTypeServiceTest.php© AskJiminnyReportActivitySerpublic© AskJiminnyReportServiceTes© AutomatedReportsCallbackSiC AutomatedReportsServiceAc1 usageJ Enaine runninalRAM 0.72 GB CPU 4.21% Disk: -.-- GB used (limit -,-- GB)public static function transformMediaTypesDataProvider(): arrayf…(C) AutomatedReoortsServiceSxi© AutomatedReportsServiceFie#[DataProvider('hasCallTypeConferenceDataProvider')]public function testHasCallTypeConference(array $callTypes, bool $expected): voidf...;#[DataProvider('hasCallTypeDialerDataProvider')]public function testHasCallTypeDialer(array $callTypes, bool Sexpected): voidf…..,c AutomatedRenortsServicete© AutomatedReportsServiceVach AutomatedRenortcServiceVall226public static function hasCallTypeConferenceDataProvider(): arrayf….,"Dally - Platrorm • In 20m100% LzFN 24 Aor 9.20:03= custom.logA console [PROD]• laravel.log x 4 SF [iminny@localhost]©DatabaseActivities.phpA HS_local [jiminny@localhost]© DealsRepository.phpA console (EU]console SlAGiNgSign inShow chartsCPU (%) ActionsN/ADN/A DN/AN/A DNIAIN/ATN/ADN/AShowing 16 items›_ ® Update available...
|
NULL
|
7956287110704671817
|
NULL
|
visual_change
|
ocr
|
NULL
|
DMSActivityMoreDocker DeskLopJiminny…..~# c-learni DMSActivityMoreDocker DeskLopJiminny…..~# c-learning-peopie# confusion-clinic# curiosity_lab# deal-insights-dev# engineering# frontend# general# infra-changes# jiminny-bg8 people-with-copilo...8 people-with-zoom-...# platform-team# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi.... Direct messagesf. Stefka Stoyanova. Adelina Petrova€. Vasil Vasilev8. Stoyan Tomov. Galya DimitrovaAneliya Angelova,...P. Nikolav YankovQ Describe what you are looking for# engineering8 24Messagest Canvase FilesMoreAdelina Petromey team. below is the recording from today sUserpilot intro session if you'd like to review it.t vou nave anv questons, lust let me know.https://app.jiminny.com/playback/7bb1742e-a340-4042-8081-3c5b00t1e100Desis av Damvanov 12.58PMTeam should live coaching work on Staging?The bot joins but, the session won't appear inthe platform1 reply 20 hours agoCircleCI APP 8:54 AM1 PR with vulnerability fixes is ready for reviewPlease take a look at the code and conhrm thatieverything works properly on your localmachine or on a planet environmentPull requests (jiminny/app)• #12005 hx(security): npm dependencyupdates - 2026-04-23 (secfix/прm-20260423)Message #engineering+ AalProject~FV favsco.js v#12011 on JY-20157-AJ-report-not-send-notification+êx:.© TrackAutomatedReportGeneratedEventTest.php> D OpportunitySyncStrategy© AutomatedReportsCommandTest.php› I ProspectSearchStrategy> D ServiceTraitsC AutomatedReportsServiceTest.php x© ClientTest.phpC RequestGenerateAskJiminnyReportJob.png© DecorateActivityTest.php© SendReportNotGeneratedMailJobTest.php© ReportNotGeneratedTest.php© TrackAutomatedReportGeneratedEvent.phpAutomateakeporscommana.ong© AskJiminnyReportActivityServiceTest.php© AskJiminnyReportActivityService.phpAutomateakeporisservice.pnp© SendReportNotGeneratedMailJob.phg© senareportmallJob.php© ReportWithAttachment.php©) RequestGenerateAskJimoortJoblest.onp© SendReportMailJobTest.php©)AisummarycreatedListener.phg© CreateDialerActivityEvent.phpc) Createnudqecreatedevent.ono© DeleteObjectsTraitTest.php© FieldDefinitionsTest.phpC) CreateActivityLoqqedEvent.phoC) TrackProviderInstalledEvent.phpC) UserPilotActivityListener.phpC) UserPilotClient.phpC) PlanhatactivityListener.phpphp api v2.phpC GetActivityFieldNameTest.ph@ PayloadBuilderTest.phpwuerysullderlest.ong<?phpmly docker.desktop PERSONALQ Search© QueryHandlerTest.phpdeclare (strc) Querviteratorl est.onpC QueryResultsTests.phpc) service l est.oho© SyncBatchRedisServiceTest./•use ...Ask Gordon BETAContainersImagesContainersGive feedbackC BaseServiceTest.php© CachedCrmServiceDecoratorTe:Container CPU usage ONo containers are running.Container memory usage ©No containers are running.45 %class Autorc) CrmActivityServiceTest.ono© CrmConfigurationSettingsServic(c) crmobiectsResolverllest.ono© DefaultProspectSearchStrategy*80 usagprivatoVolumesKubernetesBuildsQ SearchOnly show runnina containersEmailHelperTest.phpNameModelsContainer IDImagePort(s)C* FieldValueConverter Test,php49 0t >protecMCp Toolkit BET.cLavoutManaderTest.ohoC MigrateProviderService Test.php82 0 >protecredis1229ffe7ed37© Opportunity ActivityMatcherTestDocker Hubkibanaredis:56379:6379kibana/kibana:7.10.2 5601:5601© OpportunitySyncStrategyResolv22 usageorivatDocker scoutC ProspectCacheTest.phpnarokC ProspectSearchStrategyFactoryExtensionsSmr: Autblackfire-1ДаI 7c3ес7911304AAN 00a86edb2f8df3fa652b70544040:4040blackfire/blackfire: 1/ 8707:8707© ProviderRegistryTest.php© RecordSelectorTest.phpManageuminny ext- 68/5460803e0C ResolveCompanyNameByEmailT© TimePerioditeratorTest.php© UpdateCrmDataResolverTest.ph1 Resource usageelasticsearch e802ad473a4f9200:9200Show all ports. (2).> D Internal#|Datalpublicdatadog-10727542fa222datadog/agent:6.12.v D Kioskv D AutomatedReports124 8 >publicmariadb-1b7e64079c3c3mariadb:11.4.53306:3306© ActivityTypeServiceTest.php© AskJiminnyReportActivitySerpublic© AskJiminnyReportServiceTes© AutomatedReportsCallbackSiC AutomatedReportsServiceAc1 usageJ Enaine runninalRAM 0.72 GB CPU 4.21% Disk: -.-- GB used (limit -,-- GB)public static function transformMediaTypesDataProvider(): arrayf…(C) AutomatedReoortsServiceSxi© AutomatedReportsServiceFie#[DataProvider('hasCallTypeConferenceDataProvider')]public function testHasCallTypeConference(array $callTypes, bool $expected): voidf...;#[DataProvider('hasCallTypeDialerDataProvider')]public function testHasCallTypeDialer(array $callTypes, bool Sexpected): voidf…..,c AutomatedRenortsServicete© AutomatedReportsServiceVach AutomatedRenortcServiceVall226public static function hasCallTypeConferenceDataProvider(): arrayf….,"Dally - Platrorm • In 20m100% LzFN 24 Aor 9.20:03= custom.logA console [PROD]• laravel.log x 4 SF [iminny@localhost]©DatabaseActivities.phpA HS_local [jiminny@localhost]© DealsRepository.phpA console (EU]console SlAGiNgSign inShow chartsCPU (%) ActionsN/ADN/A DN/AN/A DNIAIN/ATN/ADN/AShowing 16 items›_ ® Update available...
|
NULL
|
|
75360
|
NULL
|
0
|
2026-04-24T06:20:44.992656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777011644992_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormNew TabAl reports promotion pages by nikcJ PhpStormNew TabAl reports promotion pages by nikcJY-9712 | Nuges to expire after onJiminnyUserpilot | Logged-activityJY-20157 add not enough activitie:test (876494) - jiminny/app+ New TabLộ3• Daily - Platform • in 25 mlapp.circleci.com/pipelines/github/jiminny/app/57688/workflows/c1b289da-08aa-4aad-b2a7-f2de3bc6749a/jobs/876 W100% <8Fri 24 Apr 9:20:45=circleci •Run PHPunit teststest (876494)7m 14sHomePipelinesProjectsDeploysInsightsRunnersMoreChunkexport SYMFONY_DEPRECATIONS_HELPER=weak"\nxdebug.mode=coverage\nxdebug.coverage_output_dir=/home/circleci/project\nzend_extension=xdebug.so\n" »> /usr/local/etc/php/conf.d/docker-php-ext-xdebug. inivendor/bin/paratest --coverage-clover coverage.xml --log-junit execution.xml /home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest- php:7787) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest: :testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDaysFailed asserting that two strings are equal.--- Expected+++ Actualda de- '2025-12-20T00:00:00+00:00'+' 2025-12-01T00:00:00+00:00'/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest-php:8168) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDaysFailed asserting that two strings are equal.--- Expected+++ Actualde de- '2025-10-20T00:00:00+00:00'+' 2025-10-01T00:00:00+00:00'/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest• php:854FAILURES!Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skip...
|
NULL
|
6990864316439239464
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormNew TabAl reports promotion pages by nikcJ PhpStormNew TabAl reports promotion pages by nikcJY-9712 | Nuges to expire after onJiminnyUserpilot | Logged-activityJY-20157 add not enough activitie:test (876494) - jiminny/app+ New TabLộ3• Daily - Platform • in 25 mlapp.circleci.com/pipelines/github/jiminny/app/57688/workflows/c1b289da-08aa-4aad-b2a7-f2de3bc6749a/jobs/876 W100% <8Fri 24 Apr 9:20:45=circleci •Run PHPunit teststest (876494)7m 14sHomePipelinesProjectsDeploysInsightsRunnersMoreChunkexport SYMFONY_DEPRECATIONS_HELPER=weak"\nxdebug.mode=coverage\nxdebug.coverage_output_dir=/home/circleci/project\nzend_extension=xdebug.so\n" »> /usr/local/etc/php/conf.d/docker-php-ext-xdebug. inivendor/bin/paratest --coverage-clover coverage.xml --log-junit execution.xml /home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest- php:7787) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest: :testGetGenerateReportPayloadWithMonthlyFrequencyUsesFullDaysFailed asserting that two strings are equal.--- Expected+++ Actualda de- '2025-12-20T00:00:00+00:00'+' 2025-12-01T00:00:00+00:00'/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest-php:8168) Tests\Unit\Services\Kiosk\AutomatedReports\AutomatedReportsServiceReportGenerationTest::testGetGenerateReportPayloadWithQuarterlyFrequencyUsesFullDaysFailed asserting that two strings are equal.--- Expected+++ Actualde de- '2025-10-20T00:00:00+00:00'+' 2025-10-01T00:00:00+00:00'/home/circleci/project/tests/Unit/Services/Kiosk/AutomatedReports/AutomatedReportsServiceReportGenerationTest• php:854FAILURES!Tests: 10847, Assertions: 46370, Failures: 8, Warnings: 24, Deprecations: 80, PHPUnit Deprecations: 434, Skip...
|
75358
|
|
75339
|
NULL
|
0
|
2026-04-23T11:01:15.559178+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776942075559_m1.jpg...
|
iTerm2
|
PROD (ssh)
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
vaya' --skipProviders='telus' --skipPr vaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:29:00' --to='2026-04-23 10:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:21 Running ['artisan' nudges:send --silent] 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 39.44ms DONE
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:22 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity ....... 515.04ms DONE
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity ....... 486.96ms DONE
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity ....... 469.19ms DONE
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity ....... 449.28ms DONE
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity ....... 239.44ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:46:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:09 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:41:13 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 527.76ms DONE
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 59.96ms DONE
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:12 Running ['artisan' activity:status-count] 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 15.63ms DONE
docker_lamp_1 | 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 16.08ms DONE
docker_lamp_1 | {"canceled":18}...... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:13 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:46:15 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:15 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 82.26ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:07 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:47:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:47:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 78.35ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 0.94ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:50:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:09 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:10 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:11 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:12 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:13 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:15 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' conference:pre-meeting-reminder] in background 1.26ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' hubspot:journal-poll --start] in background 0.93ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:19 Running ['artisan' crm:reset-governor] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:51:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:46:11 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:51:09 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 591.43ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 29.04ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 17.26ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.87ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:52:05 Running ['artisan' meeting-bot:schedule-bot] ... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:07 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:08 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:13 Running ['artisan' mailbox:skip-lists:refresh] . 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:16 Running ['artisan' mailbox:batch:process --max-batches=15] 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:23 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:25 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:26 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00'] 2026-04-23 10:52:29 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:52:29 Jiminny\Jobs\Mailbox\CreateBatches ....... 233.16ms DONE
docker_lamp_1 | 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:53:08 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:14 Running ['artisan' dialers:monitor-activities] . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:20 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:25 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:27 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:30 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.61ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:54:03 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:05 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:07 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:09 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:12 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:14 Running ['artisan' activity:aircall:check-and-renew] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:17 Running ['artisan' track:retry-failed-downloads] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:55:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:07 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:08 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:10 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:11 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:12 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:13 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' conference:pre-meeting-reminder] in background 0.87ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' hubspot:journal-poll --start] in background 0.72ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:51:09 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 25.65ms DONE
docker_lamp_1 | 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:12 Running ['artisan' activity:status-count] 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.74ms DONE
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.83ms DONE
docker_lamp_1 | {"canceled":20}...... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:13 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 69.39ms DONE
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 61.98ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:57:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:08 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:57:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:57:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 54.57ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:58:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:09 Running ['artisan' conference:monitor:count] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.91ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' calendar:sync --dateMode=daily] 2026-04-23 10:58:21 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:22 Jiminny\Jobs\Calendar\SyncCalendarEvents . 712.80ms DONE
docker_lamp_1 | 2026-04-23 10:58:24 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:24 Jiminny\Jobs\Calendar\SyncCalendarEvents . 424.53ms DONE
docker_lamp_1 | 11s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:58:26 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:26 Jiminny\Jobs\Calendar\SyncCalendarEvents .. 72.63ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:59:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 11:00:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:04 Running ['artisan' dialers:monitor-activities] 2026-04-23 11:00:04 Jiminny\Events\Activities\StatusUpdated [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:05 Jiminny\Events\Activities\StatusUpdated .. 660.52ms DONE
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:10 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:11 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:14 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:15 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:16 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' conference:pre-meeting-reminder] in background 1.33ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' hubspot:journal-poll --start] in background 1.15ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:21 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:22 Running ['artisan' datadog:report:processing-sla-activities] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:23 Running ['artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:24 Running ['artisan' mailbox:batch:fail-stalled] 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 40.58ms DONE
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:fail-stalled > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:26 Running ['artisan' jiminny:transcription:retry-stuck] 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity ....... 472.48ms DONE
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity ....... 441.59ms DONE
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | No stuck transcriptions found.
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-stuck > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:27 Running ['artisan' automated-reports:send] 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity ....... 512.16ms DONE
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:28 Jiminny\Jobs\Activity\SyncActivity ....... 482.61ms DONE
docker_lamp_1 | 2026-04-23 11:00:28 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' automated-reports:send > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:28 Running ['artisan' deal-insights:send-update] 2026-04-23 11:00:29 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | .. 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' deal-insights:send-update > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:29 Running ['artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:31 Running ['artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:32 Running ['artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:33 Running ['artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:34 Running ['artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:35 Running ['artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:37 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-04-23 11:00:38 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:38 Jiminny\Jobs\Activity\SyncActivity ....... 248.26ms DONE
docker_lamp_1 | 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:38 Running ['artisan' nudges:send --silent] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:40 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 129.62ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 9.72ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 4.51ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 4.35ms DONE
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 11:01:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:01:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:01:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-socia...
|
[{"role":"AXTextArea","text [{"role":"AXTextArea","text":"vaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:29:00' --to='2026-04-23 10:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:21 Running ['artisan' nudges:send --silent] 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ........ 39.44ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:22 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ....... 515.04ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ....... 486.96ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ....... 469.19ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ....... 449.28ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ....... 239.44ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:46:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:09 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:41:13 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 527.76ms DONE\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 59.96ms DONE\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:12 Running ['artisan' activity:status-count] 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 15.63ms DONE\ndocker_lamp_1 | 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 16.08ms DONE\ndocker_lamp_1 | {\"canceled\":18}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:13 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:46:15 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:15 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 82.26ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:07 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:47:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:47:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 78.35ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 0.94ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ........ 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:50:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:09 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:10 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:11 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:12 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:13 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:15 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' conference:pre-meeting-reminder] in background 1.26ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' hubspot:journal-poll --start] in background 0.93ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:19 Running ['artisan' crm:reset-governor] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:51:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:46:11 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:51:09 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 591.43ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 29.04ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 17.26ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.87ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:52:05 Running ['artisan' meeting-bot:schedule-bot] ... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:07 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:08 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:13 Running ['artisan' mailbox:skip-lists:refresh] . 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:16 Running ['artisan' mailbox:batch:process --max-batches=15] 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:23 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:25 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:26 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00'] 2026-04-23 10:52:29 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:52:29 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 233.16ms DONE\ndocker_lamp_1 | 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:53:08 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:14 Running ['artisan' dialers:monitor-activities] . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:20 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:25 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:27 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:30 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.61ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:54:03 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:05 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:07 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:09 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:12 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:14 Running ['artisan' activity:aircall:check-and-renew] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:17 Running ['artisan' track:retry-failed-downloads] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:55:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:07 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:08 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:10 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:11 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:12 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:13 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' conference:pre-meeting-reminder] in background 0.87ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' hubspot:journal-poll --start] in background 0.72ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:51:09 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 25.65ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:12 Running ['artisan' activity:status-count] 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 1s DONE\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.74ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.83ms DONE\ndocker_lamp_1 | {\"canceled\":20}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:13 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 69.39ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 61.98ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:57:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:08 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:57:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:57:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 54.57ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:58:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:09 Running ['artisan' conference:monitor:count] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.91ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' calendar:sync --dateMode=daily] 2026-04-23 10:58:21 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 712.80ms DONE\ndocker_lamp_1 | 2026-04-23 10:58:24 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:24 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 424.53ms DONE\ndocker_lamp_1 | 11s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:58:26 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:26 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents .. 72.63ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:59:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 11:00:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:04 Running ['artisan' dialers:monitor-activities] 2026-04-23 11:00:04 Jiminny\\Events\\Activities\\StatusUpdated ........ RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:05 Jiminny\\Events\\Activities\\StatusUpdated .. 660.52ms DONE\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:10 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:11 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:14 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:15 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:16 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' conference:pre-meeting-reminder] in background 1.33ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' hubspot:journal-poll --start] in background 1.15ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:21 Running ['artisan' crm:reset-governor] ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:22 Running ['artisan' datadog:report:processing-sla-activities] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:23 Running ['artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:24 Running ['artisan' mailbox:batch:fail-stalled] 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ........ 40.58ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:fail-stalled > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:26 Running ['artisan' jiminny:transcription:retry-stuck] 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ....... 472.48ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ....... 441.59ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | No stuck transcriptions found.\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-stuck > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:27 Running ['artisan' automated-reports:send] 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ....... 512.16ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:28 Jiminny\\Jobs\\Activity\\SyncActivity ....... 482.61ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:28 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' automated-reports:send > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:28 Running ['artisan' deal-insights:send-update] 2026-04-23 11:00:29 Jiminny\\Jobs\\Activity\\SyncActivity ............. 1s DONE\ndocker_lamp_1 | .. 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' deal-insights:send-update > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:29 Running ['artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:31 Running ['artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:32 Running ['artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:33 Running ['artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:34 Running ['artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:35 Running ['artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:37 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-04-23 11:00:38 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:38 Jiminny\\Jobs\\Activity\\SyncActivity ....... 248.26ms DONE\ndocker_lamp_1 | 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:38 Running ['artisan' nudges:send --silent] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:40 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 129.62ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 9.72ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 4.51ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 4.35ms DONE\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 11:01:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:56:13 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:10 Running ['artisan' activity:sync 'ringcentral' --from='2026-04-23 05:01:00' --to='2026-04-23 11:01:00'] 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 43.70ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 897.69ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 24.46ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 19.41ms DONE\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' --from='2026-04-23 05:01:00' --to='2026-04-23 11:01:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\n\n\nv View in Docker Desktop o View Config w Enable Watch","depth":4,"bounds":{"left":0.0,"top":0.112222224,"width":0.50069445,"height":0.8877778},"value":"vaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:29:00' --to='2026-04-23 10:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:21 Running ['artisan' nudges:send --silent] 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ........ 39.44ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:45:22 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ....... 515.04ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:22 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ....... 486.96ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ....... 469.19ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:23 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ....... 449.28ms DONE\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:45:24 Jiminny\\Jobs\\Activity\\SyncActivity ....... 239.44ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:46:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:09 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:41:13 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 527.76ms DONE\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 59.96ms DONE\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:12 Running ['artisan' activity:status-count] 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 15.63ms DONE\ndocker_lamp_1 | 2026-04-23 10:46:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 16.08ms DONE\ndocker_lamp_1 | {\"canceled\":18}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:46:13 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:46:15 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:46:15 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 82.26ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:47:07 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:47:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:47:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 78.35ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 0.94ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams: \ndocker_lamp_1 | ........ 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:49:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:50:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:09 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:10 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:11 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:12 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:13 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:15 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' conference:pre-meeting-reminder] in background 1.26ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' hubspot:journal-poll --start] in background 0.93ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:19 Running ['artisan' crm:reset-governor] 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:50:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:51:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:51:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:46:11 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:51:09 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 591.43ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 29.04ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 17.26ms DONE\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:51:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.87ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:52:05 Running ['artisan' meeting-bot:schedule-bot] ... 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:07 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:08 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:13 Running ['artisan' mailbox:skip-lists:refresh] . 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:16 Running ['artisan' mailbox:batch:process --max-batches=15] 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:23 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:25 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:52:26 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00'] 2026-04-23 10:52:29 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:52:29 Jiminny\\Jobs\\Mailbox\\CreateBatches ....... 233.16ms DONE\ndocker_lamp_1 | 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:53:08 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:14 Running ['artisan' dialers:monitor-activities] . 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:20 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:25 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:27 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:53:30 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.61ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:54:03 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:05 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:07 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:09 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:12 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:14 Running ['artisan' activity:aircall:check-and-renew] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:54:17 Running ['artisan' track:retry-failed-downloads] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:55:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:07 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:08 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:10 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:11 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:12 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:13 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' conference:pre-meeting-reminder] in background 0.87ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' hubspot:journal-poll --start] in background 0.72ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:08 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:51:09 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 25.65ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:12 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:12 Running ['artisan' activity:status-count] 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ 1s DONE\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.74ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:13 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 14.83ms DONE\ndocker_lamp_1 | {\"canceled\":20}...... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:56:13 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.\ndocker_lamp_1 | ............... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 69.39ms DONE\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ................. RUNNING\ndocker_lamp_1 | 2026-04-23 10:56:16 Jiminny\\Jobs\\Mailbox\\SyncInbox ............ 61.98ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:57:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:57:08 Running ['artisan' mailbox:batch:create] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:57:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ............. RUNNING\ndocker_lamp_1 | 2026-04-23 10:57:10 Jiminny\\Jobs\\Mailbox\\CreateBatches ........ 54.57ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:58:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:09 Running ['artisan' conference:monitor:count] ... 3s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.91ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' calendar:sync --dateMode=daily] 2026-04-23 10:58:21 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:22 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 712.80ms DONE\ndocker_lamp_1 | 2026-04-23 10:58:24 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:24 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents . 424.53ms DONE\ndocker_lamp_1 | 11s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | 2026-04-23 10:58:26 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents ....... RUNNING\ndocker_lamp_1 | 2026-04-23 10:58:26 Jiminny\\Jobs\\Calendar\\SyncCalendarEvents .. 72.63ms DONE\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 10:59:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:04 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 10:59:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 11:00:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:04 Running ['artisan' dialers:monitor-activities] 2026-04-23 11:00:04 Jiminny\\Events\\Activities\\StatusUpdated ........ RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:05 Jiminny\\Events\\Activities\\StatusUpdated .. 660.52ms DONE\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:09 Running ['artisan' conference:monitor:count] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:10 Running ['artisan' activity:purge-stale] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:11 Running ['artisan' mailbox:text-relay:sync] {\ndocker_lamp_1 | \"error\": \"invalid_request\",\ndocker_lamp_1 | \"error_description\": \"Invalid impersonation \\u0026quot;sub\\u0026quot; field: @\"\ndocker_lamp_1 | }\ndocker_lamp_1 | .... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:14 Running ['artisan' conference:monitor:start] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:15 Running ['artisan' conference:monitor:end] ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:16 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' conference:pre-meeting-reminder] in background 1.33ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' hubspot:journal-poll --start] in background 1.15ms DONE\ndocker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish \"framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e\" \"$?\") > '/dev/null' 2>&1 & \ndocker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.\ndocker_lamp_1 | 🚀\u0000 Starting HubSpot journal polling service...\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:21 Running ['artisan' crm:reset-governor] ......... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:22 Running ['artisan' datadog:report:processing-sla-activities] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:23 Running ['artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:24 Running ['artisan' mailbox:batch:fail-stalled] 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ........ 40.58ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:fail-stalled > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:26 Running ['artisan' jiminny:transcription:retry-stuck] 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ....... 472.48ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:26 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ....... 441.59ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | No stuck transcriptions found.\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-stuck > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:27 Running ['artisan' automated-reports:send] 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ....... 512.16ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:27 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:28 Jiminny\\Jobs\\Activity\\SyncActivity ....... 482.61ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:28 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | ..... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' automated-reports:send > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:28 Running ['artisan' deal-insights:send-update] 2026-04-23 11:00:29 Jiminny\\Jobs\\Activity\\SyncActivity ............. 1s DONE\ndocker_lamp_1 | .. 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' deal-insights:send-update > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:29 Running ['artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:31 Running ['artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:32 Running ['artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:33 Running ['artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:34 Running ['artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:35 Running ['artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00'] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:37 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-04-23 11:00:38 Jiminny\\Jobs\\Activity\\SyncActivity ............. RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:38 Jiminny\\Jobs\\Activity\\SyncActivity ....... 248.26ms DONE\ndocker_lamp_1 | 0 social account(s) to be processed ...\ndocker_lamp_1 | \ndocker_lamp_1 | Done!\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:38 Running ['artisan' nudges:send --silent] ....... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:00:40 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 129.62ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 9.72ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 4.51ms DONE\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob RUNNING\ndocker_lamp_1 | 2026-04-23 11:00:41 Jiminny\\Component\\Nudge\\Job\\ProcessUserNudgesJob 4.35ms DONE\ndocker_lamp_1 | 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\ndocker_lamp_1 | \ndocker_lamp_1 | 2026-04-23 11:01:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:03 Running ['artisan' dialers:monitor-activities] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:56:13 (delay: 0s)\ndocker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)\ndocker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)\ndocker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)\ndocker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...\ndocker_lamp_1 | Dispatched 4 HubSpot sync jobs\ndocker_lamp_1 | ... 1s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | 2026-04-23 11:01:10 Running ['artisan' activity:sync 'ringcentral' --from='2026-04-23 05:01:00' --to='2026-04-23 11:01:00'] 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 43.70ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:10 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ...... 897.69ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 24.46ms DONE\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ............ RUNNING\ndocker_lamp_1 | 2026-04-23 11:01:11 Jiminny\\Jobs\\Crm\\SyncHubspotObjects ....... 19.41ms DONE\ndocker_lamp_1 | 2s DONE\ndocker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' --from='2026-04-23 05:01:00' --to='2026-04-23 11:01:00' > '/proc/1/fd/1' 2>&1 \ndocker_lamp_1 | \ndocker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run\n\n\nv View in Docker Desktop o View Config w Enable Watch","is_focused":true},{"role":"AXButton","text":"Menu","depth":3,"bounds":{"left":0.4861111,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥1 DOCKER (docker-compose)","depth":3,"bounds":{"left":0.01875,"top":0.09,"width":0.46388888,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Thu Apr 23 10:18:26 UTC 2026\n\n System load: 0.0 Processes: 151\n Usage of /: 58.2% of 7.57GB Users logged in: 5\n Memory usage: 40% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n37 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Wed Apr 22 12:09:09 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","depth":5,"value":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ prod\n(lukas@jiminny-prod-bastion) Verification code: \nWelcome to Ubuntu 22.04.5 LTS (GNU/Linux 6.8.0-1041-aws x86_64)\n\n * Documentation: https://help.ubuntu.com\n * Management: https://landscape.canonical.com\n * Support: https://ubuntu.com/pro\n\n System information as of Thu Apr 23 10:18:26 UTC 2026\n\n System load: 0.0 Processes: 151\n Usage of /: 58.2% of 7.57GB Users logged in: 5\n Memory usage: 40% IPv4 address for eth0: 10.30.45.167\n Swap usage: 0%\n\n * Ubuntu Pro delivers the most comprehensive open source security and\n compliance features.\n\n https://ubuntu.com/aws/pro\n\nExpanded Security Maintenance for Applications is not enabled.\n\n37 updates can be applied immediately.\nTo see these additional updates run: apt list --upgradable\n\nEnable ESM Apps to receive additional future security updates.\nSee https://ubuntu.com/esm or run: sudo pro status\n\nNew release '24.04.4 LTS' available.\nRun 'do-release-upgrade' to upgrade to it.\n\n\n*** System restart required ***\nLast login: Wed Apr 22 12:09:09 2026 from 212.5.153.87\nlukas@jiminny-prod-bastion:~$","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.08944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥2 PROD (ssh)","depth":4,"bounds":{"left":0.52013886,"top":0.09,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.26222223,"width":0.4986111,"height":0.14222223},"value":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.23944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥3 EU (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.24,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.43222222,"width":0.4986111,"height":0.12222222},"value":"Last login: Thu Apr 23 12:12:54 on console\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.40944445,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥4 STAGE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.41,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:13:49 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.5822222,"width":0.4986111,"height":0.12222222},"value":"Last login: Thu Apr 23 12:13:49 on ttys001\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.5594444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥5 QA (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.56,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:13:49 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.7322222,"width":0.4986111,"height":0.12222222},"value":"Last login: Thu Apr 23 12:13:49 on ttys003\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.70944446,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥6 FE (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.71,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXTextArea","text":"Last login: Thu Apr 23 12:13:49 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","depth":5,"bounds":{"left":0.5013889,"top":0.8622222,"width":0.4986111,"height":0.13777778},"value":"Last login: Thu Apr 23 12:13:49 on ttys004\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\n\nPoetry could not find a pyproject.toml file in /Users/lukas or its parents\nlukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $","is_focused":true},{"role":"AXButton","text":"Menu","depth":4,"bounds":{"left":0.98819447,"top":0.85944444,"width":0.010416667,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"⌥7 EXT (-zsh)","depth":4,"bounds":{"left":0.52013886,"top":0.86,"width":0.46458334,"height":0.015555556},"role_description":"text"},{"role":"AXRadioButton","text":"DOCKER","depth":2,"bounds":{"left":0.0,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.004166667,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"DEV (-zsh)","depth":2,"bounds":{"left":0.19722222,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.2013889,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"APP (-zsh)","depth":2,"bounds":{"left":0.39444444,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.3986111,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"screenpipe\"","depth":2,"bounds":{"left":0.59166664,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.59583336,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"-zsh","depth":2,"bounds":{"left":0.7888889,"top":0.05888889,"width":0.19722222,"height":0.026666667},"role_description":"radio button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close Tab","depth":3,"bounds":{"left":0.79305553,"top":0.06333333,"width":0.011111111,"height":0.017777778},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"⌥⌘1","depth":1,"bounds":{"left":0.95763886,"top":0.032222223,"width":0.03888889,"height":0.018888889},"automation_id":"_NS:8","role_description":"text"},{"role":"AXStaticText","text":"PROD (ssh)","depth":1,"bounds":{"left":0.47361112,"top":0.033333335,"width":0.05486111,"height":0.017777778},"role_description":"text"}]...
|
-2994642126750354197
|
-5333062817877816479
|
click
|
accessibility
|
NULL
|
vaya' --skipProviders='telus' --skipPr vaya' --skipProviders='telus' --skipProviders='talkdesk'] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:29:00' --to='2026-04-23 10:45:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:21 Running ['artisan' nudges:send --silent] 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 39.44ms DONE
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:45:22 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity ....... 515.04ms DONE
docker_lamp_1 | 2026-04-23 10:45:22 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity ....... 486.96ms DONE
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity ....... 469.19ms DONE
docker_lamp_1 | 2026-04-23 10:45:23 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity ....... 449.28ms DONE
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:45:24 Jiminny\Jobs\Activity\SyncActivity ....... 239.44ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:46:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:09 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:41:13 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 527.76ms DONE
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:11 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 59.96ms DONE
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:12 Running ['artisan' activity:status-count] 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 15.63ms DONE
docker_lamp_1 | 2026-04-23 10:46:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 16.08ms DONE
docker_lamp_1 | {"canceled":18}...... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:46:13 Running ['artisan' mailbox:sync] Queueing 1 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:46:15 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:46:15 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 82.26ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:47:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:47:07 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:47:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:47:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 78.35ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:48:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 0.94ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:48:09 Running ['artisan' crm:autolog-delayed] Dispatched autolog delayed jobs for all applicable teams:
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:autolog-delayed > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:49:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:49:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:50:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:09 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:10 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:11 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:12 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:13 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:15 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' conference:pre-meeting-reminder] in background 1.26ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' hubspot:journal-poll --start] in background 0.93ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:50:17 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:19 Running ['artisan' crm:reset-governor] 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:50:20 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:51:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:51:08 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:46:11 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:51:09 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ...... 591.43ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 29.04ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 17.26ms DONE
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:51:10 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.87ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:52:05 Running ['artisan' meeting-bot:schedule-bot] ... 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:07 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:08 Running ['artisan' jiminny:monitor-social-accounts] 4s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:13 Running ['artisan' mailbox:skip-lists:refresh] . 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:16 Running ['artisan' mailbox:batch:process --max-batches=15] 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:23 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:25 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:52:26 Running ['artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00'] 2026-04-23 10:52:29 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:52:29 Jiminny\Jobs\Mailbox\CreateBatches ....... 233.16ms DONE
docker_lamp_1 | 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'ringcentral' 'avaya' 'telus' 'talkdesk' --from='2026-04-23 10:36:00' --to='2026-04-23 10:52:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:53:08 Running ['artisan' meeting-bot:schedule-bot] ... 6s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:14 Running ['artisan' dialers:monitor-activities] . 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:20 Running ['artisan' jiminny:monitor-social-accounts] 5s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:25 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:27 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:53:30 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.61ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:54:03 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:05 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:07 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:09 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:10 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:12 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:14 Running ['artisan' activity:aircall:check-and-renew] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:aircall:check-and-renew > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:54:17 Running ['artisan' track:retry-failed-downloads] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' track:retry-failed-downloads > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:55:01 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:05 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:06 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:07 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:08 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:10 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:11 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:12 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:13 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' conference:pre-meeting-reminder] in background 0.87ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' hubspot:journal-poll --start] in background 0.72ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:55:15 Running ['artisan' crm:bullhorn:ping --heartbeat] 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:56:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:08 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:10 Running ['artisan' crm:sync-hubspot-objects] [HubSpot] Syncing objects for Hubspot (abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4) since 2026-04-23 10:51:09 (delay: 0s)
docker_lamp_1 | Team TestV (2708d27a-7f31-4d90-bd2b-b5bde1c0211e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team KioskAccount (dedab245-604c-4cd2-a83e-4b9e034b2772) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for InsightSquared (b2b115eb-93ce-4d1b-929c-173757df8fba) since 2026-02-17 15:09:59 (delay: 0s)
docker_lamp_1 | Team Aircall Demo (7980e5eb-b11c-4cee-9c21-8bb29ba85f3b) is not yet assigned an owner. skipping...
docker_lamp_1 | [HubSpot] Syncing objects for GoStudent UAT (b2d49a54-b645-4637-a7ae-a86cfce6e8e4) since 2026-02-17 15:09:59 (delay: 1s)
docker_lamp_1 | [HubSpot] Syncing objects for JustCall (c6b9d6b0-b48d-4832-a68c-a57d60651888) since 2026-02-17 15:07:41 (delay: 1s)
docker_lamp_1 | Team Twilio Video (c334ca55-b230-411c-b10e-31c8204bd07b) is not yet assigned an owner. skipping...
docker_lamp_1 | Team My Test Account 3000 (dbc9990d-b35f-4e38-9550-22cdd6059514) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test (7997eb70-8aa4-491a-870d-311977568df4) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Test (5e06dcee-0613-470e-9a77-2c283198f3bf) is not yet assigned an owner. skipping...
docker_lamp_1 | Team test ogg auto sync (da44776e-306f-427a-83d8-a1b4baa5537e) is not yet assigned an owner. skipping...
docker_lamp_1 | Team Tourlaner (d9b71080-388b-4cf5-8175-aa0f29bee635) is not yet assigned an owner. skipping...
docker_lamp_1 | Dispatched 4 HubSpot sync jobs
docker_lamp_1 | ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:sync-hubspot-objects > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:11 Running ['artisan' activity:notify-not-logged] 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 25.65ms DONE
docker_lamp_1 | 2026-04-23 10:56:12 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:notify-not-logged > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:12 Running ['artisan' activity:status-count] 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.74ms DONE
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:13 Jiminny\Jobs\Crm\SyncHubspotObjects ....... 14.83ms DONE
docker_lamp_1 | {"canceled":20}...... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:status-count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:56:13 Running ['artisan' mailbox:sync] Queueing 2 inbox(es) for sync.
docker_lamp_1 | [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 69.39ms DONE
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:56:16 Jiminny\Jobs\Mailbox\SyncInbox [PASSWORD_DOTS] 61.98ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:57:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:57:08 Running ['artisan' mailbox:batch:create] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:create > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:57:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 10:57:10 Jiminny\Jobs\Mailbox\CreateBatches [PASSWORD_DOTS] 54.57ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:58:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:04 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:07 Running ['artisan' mailbox:batch:process --max-batches=15] 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:09 Running ['artisan' conference:monitor:count] ... 3s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 4.91ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failed --max-batches=15 > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 10:58:13 Running ['artisan' calendar:sync --dateMode=daily] 2026-04-23 10:58:21 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:22 Jiminny\Jobs\Calendar\SyncCalendarEvents . 712.80ms DONE
docker_lamp_1 | 2026-04-23 10:58:24 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:24 Jiminny\Jobs\Calendar\SyncCalendarEvents . 424.53ms DONE
docker_lamp_1 | 11s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' calendar:sync --dateMode=daily > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 | 2026-04-23 10:58:26 Jiminny\Jobs\Calendar\SyncCalendarEvents ....... RUNNING
docker_lamp_1 | 2026-04-23 10:58:26 Jiminny\Jobs\Calendar\SyncCalendarEvents .. 72.63ms DONE
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 10:59:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:04 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 10:59:07 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 11:00:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:04 Running ['artisan' dialers:monitor-activities] 2026-04-23 11:00:04 Jiminny\Events\Activities\StatusUpdated [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:05 Jiminny\Events\Activities\StatusUpdated .. 660.52ms DONE
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:06 Running ['artisan' mailbox:skip-lists:refresh] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:skip-lists:refresh > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:08 Running ['artisan' mailbox:batch:process --max-batches=15] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:09 Running ['artisan' conference:monitor:count] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:count > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:10 Running ['artisan' activity:purge-stale] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:purge-stale > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:11 Running ['artisan' mailbox:text-relay:sync] {
docker_lamp_1 | "error": "invalid_request",
docker_lamp_1 | "error_description": "Invalid impersonation \u0026quot;sub\u0026quot; field: @"
docker_lamp_1 | }
docker_lamp_1 | .... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:text-relay:sync > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:13 Running ['artisan' conference:pre-meeting-notification] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:pre-meeting-notification > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:14 Running ['artisan' conference:monitor:start] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:start > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:15 Running ['artisan' conference:monitor:end] ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' conference:monitor:end > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:16 Running ['artisan' jiminny:fix-hubspot-tokens] . 2s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:fix-hubspot-tokens > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' conference:pre-meeting-reminder] in background 1.33ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' conference:pre-meeting-reminder > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-805efb160ee8d9da02e60364ace7970eb2b35f31" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' hubspot:journal-poll --start] in background 1.15ms DONE
docker_lamp_1 | ⇂ ('/usr/local/bin/php' 'artisan' hubspot:journal-poll --start > '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan' schedule:finish "framework/schedule-e26d77f915d2c55fe91ca4148a230e32eaa1865e" "$?") > '/dev/null' 2>&1 &
docker_lamp_1 | 2026-04-23 11:00:19 Running ['artisan' jiminny:transcription:retry-failed] No failed transcriptions found.
docker_lamp_1 | 🚀 Starting HubSpot journal polling service...
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-failed > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:21 Running ['artisan' crm:reset-governor] [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:reset-governor > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:22 Running ['artisan' datadog:report:processing-sla-activities] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' datadog:report:processing-sla-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:23 Running ['artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync --from='2026-04-23 10:44:00' --to='2026-04-23 11:00:00' --skipProviders='ringcentral' --skipProviders='avaya' --skipProviders='telus' --skipProviders='talkdesk' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:24 Running ['artisan' mailbox:batch:fail-stalled] 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 40.58ms DONE
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' mailbox:batch:fail-stalled > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:26 Running ['artisan' jiminny:transcription:retry-stuck] 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity ....... 472.48ms DONE
docker_lamp_1 | 2026-04-23 11:00:26 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity ....... 441.59ms DONE
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | No stuck transcriptions found.
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:transcription:retry-stuck > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:27 Running ['artisan' automated-reports:send] 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity ....... 512.16ms DONE
docker_lamp_1 | 2026-04-23 11:00:27 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:28 Jiminny\Jobs\Activity\SyncActivity ....... 482.61ms DONE
docker_lamp_1 | 2026-04-23 11:00:28 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | ..... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' automated-reports:send > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:28 Running ['artisan' deal-insights:send-update] 2026-04-23 11:00:29 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] 1s DONE
docker_lamp_1 | .. 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' deal-insights:send-update > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:29 Running ['artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloud-talk' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:31 Running ['artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'vonage' --from='2026-04-23 05:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:32 Running ['artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:33 Running ['artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'cloudcall-us' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:34 Running ['artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'five-nine' --from='2026-04-23 08:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:35 Running ['artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00'] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' activity:sync 'hubspot' --from='2026-04-23 10:00:00' --to='2026-04-23 11:00:00' > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:37 Running ['artisan' crm:bullhorn:ping --heartbeat] 2026-04-23 11:00:38 Jiminny\Jobs\Activity\SyncActivity [PASSWORD_DOTS] RUNNING
docker_lamp_1 | 2026-04-23 11:00:38 Jiminny\Jobs\Activity\SyncActivity ....... 248.26ms DONE
docker_lamp_1 | 0 social account(s) to be processed ...
docker_lamp_1 |
docker_lamp_1 | Done!
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' crm:bullhorn:ping --heartbeat > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:38 Running ['artisan' nudges:send --silent] ....... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' nudges:send --silent > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:00:40 Running ['artisan' jiminny:playlists:normalize-sort] 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 129.62ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 9.72ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 4.51ms DONE
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob RUNNING
docker_lamp_1 | 2026-04-23 11:00:41 Jiminny\Component\Nudge\Job\ProcessUserNudgesJob 4.35ms DONE
docker_lamp_1 | 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:playlists:normalize-sort > '/proc/1/fd/1' 2>&1
docker_lamp_1 |
docker_lamp_1 | run_artisan_schedule: Done waiting for schedule:run
docker_lamp_1 |
docker_lamp_1 | 2026-04-23 11:01:02 Running ['artisan' meeting-bot:schedule-bot] ... 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' meeting-bot:schedule-bot > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:01:03 Running ['artisan' dialers:monitor-activities] . 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' dialers:monitor-activities > '/proc/1/fd/1' 2>&1
docker_lamp_1 | 2026-04-23 11:01:05 Running ['artisan' jiminny:monitor-social-accounts] 1s DONE
docker_lamp_1 | ⇂ '/usr/local/bin/php' 'artisan' jiminny:monitor-socia...
|
75337
|
|
75338
|
NULL
|
0
|
2026-04-23T11:01:14.127822+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776942074127_m2.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivityMoreSlackcalVIewMistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewMistonWindowhelp@ Describe what you are looking forJiminny... vdrandom# releases# sona-ofnce# support# thank-vous# the people of jimi... Direct messagesGalya DimitrovaAdelina Petrova3 Aneliya Angelova, ... Vasil VasilevStoyan TomovP. Nikolay YankovP Petko Kashinskif Aneliva Angelovae. Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela Dureva* Stefka StoyanovaStovan Tanev::: Apps8 Toast-T lira CloudGalya Dimitrova• Messagese FilesUntitledHo нe MOr.искам на базана тях да пускам определени банерита наи дооре в този случаи да са дваотделни евентаLukas Kovalik 11:10 AMок, герогс суре и тrequеnсу ги оставям врауlодс и на лватаGalya Dimitrova 11:11 AMLukas Kovalik 1:43 PMзлрасти имам оъоз въпросАко има генерирани киоск репорти, но не сапратени и нямам Ask Jiminny Revort -r.тояова ли ла ла вижлам al-reborts страница!Забелязах сега че се ороят само пратени.Говоря за условие да има поне един репорт..Galva Dimitrova 1:58 PMче с са си ги пуснали само ло тях и не са гипрашали на клиента. а в този случай ни eправилна пооверката за страницата - зашотоние поовеляваме юзьва лали вижла пепортиили не, а не лали има генепивани в базатаMessage Galva Dimitrova+ Aa €FV faVsco.js°9 JY-20157-AJ-report-not-send-notificatiorProjectMintercomMinterventionMiakeasmith> Djane-php?Lasonmccrean> Djdavidbakr> Djean85> @jeremykendallDiminny> Ojolicode>ustinrainbow• kalnoy> C kelunik> _ Kkszvmanowsk>D larastan> D larave• D laravoli• cobucciMleaque→ madnet1 marc-mabeMmarkroaovski1 mastermindsM microsofiN mockerv> monolog> mtdowling> D myclabsv D nesbotv Mcarbon>Ca.github>D bin>Dlazyv Dsrov ( Carbon© CarbonImmutable.php Xetamhlen©) AskJiminnyReportActivityServiceTest.ph> C Constants( Exceptions> C Land> C7 Laravel→DuistM MessageFormatten> 7PHPStani>M TraitsKC AbstractTranslator.ohoP Callback.ohp(C) Carbon.ohoG CarhonConverterinterfal(c) Carbonimmutable nhnl@ Carboninterface.php© CarbonInterval.php© AskJiminnyReportActivityService.php© AutomatedReportsCommand.phgc) AutomatedReportsCommand lest.onp© ReportController.php© UserPilotClient.phgC) Userlranstormer.phpA simple APl extension for DateTimelmmutable<autodoc generated by composer phodoc sProperties: property $localeDay0fWeek string - the day of week in current localeproperty $shortLocaleDay0fWeek string - the abbreviated day of week in currentlocaleproperty$localeMonthproperty SshortLocaleMonth string - the abbreviated month in current localeintint -1 (for Mondav) throuah 7 (for Sundav.nestamp float|int|string - seconds since the Unix Epochsenquisnuayurweek scring - the day or week in cnollsh$shortEnglishDay0fWeek string - the abbreviated day of week in Englishstring - the month in EnglishSshortEnqLishMonth strina - the abbreviated month in EnalishismilLisecond 1ntSweek |int - 1through 53sint -1 throuch 53int - vear according to ISO week formatproperty | Sage int -does a diffinYears() with default parametersSoffset int - the timezone offset in seconds from UTOSoffcetMinutesint- the timezone offset in minutes from Uiieint - the timezone offset in hours from UTdStimezone CarbontimeZone -the current timezoneproperty Stz CarbonTimeZone - alias of $timezoneproperty $century0fMillennium int - The value of the century starting from theint - The value of the dav startina from the beainnina of thecurrent centuryproperty Sday0fDecadeint - The value of the day starting from the beginning of the: Support Daily - in 59 m100% 52Thu 23 Apr 14:01:13= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]A console (STAGING] Tx: AutoPlaygrounddojiminny vО2 01417 22 2Äselect * trom qroups where 1d = 28select * from plavbooks where id = 179:select * from playbook_categories where id = 1391;select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MAC.SELECT ar.id, ar.uuid, ar.media.type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repont.idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATINNER JOIN'automated report results'.'report id' = 'automated_reports'.'idWHERE 1=1AND'automated report_results'.'generated_ at' IS NOT NULLANDautomated_report_results'.'sent_at' IS NOT NULLAAnautomated_reports'.'team_ id' = 1AND JSON_ CONTAINS('automated reports'.'recipients'. 143. 'S."users"')SELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from usens where name = "Intearation Accounti• # 169%SELECT * EROM social accounts WHEREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2W Windsurf Teams 20:1 UTF-8 f 4 space-...
|
NULL
|
2988488892858827586
|
NULL
|
click
|
ocr
|
NULL
|
HomeActivityMoreSlackcalVIewMistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewMistonWindowhelp@ Describe what you are looking forJiminny... vdrandom# releases# sona-ofnce# support# thank-vous# the people of jimi... Direct messagesGalya DimitrovaAdelina Petrova3 Aneliya Angelova, ... Vasil VasilevStoyan TomovP. Nikolay YankovP Petko Kashinskif Aneliva Angelovae. Nikolay Nikolov# Mario GeoreievSe: Todor StamatovA Gabriela Dureva* Stefka StoyanovaStovan Tanev::: Apps8 Toast-T lira CloudGalya Dimitrova• Messagese FilesUntitledHo нe MOr.искам на базана тях да пускам определени банерита наи дооре в този случаи да са дваотделни евентаLukas Kovalik 11:10 AMок, герогс суре и тrequеnсу ги оставям врауlодс и на лватаGalya Dimitrova 11:11 AMLukas Kovalik 1:43 PMзлрасти имам оъоз въпросАко има генерирани киоск репорти, но не сапратени и нямам Ask Jiminny Revort -r.тояова ли ла ла вижлам al-reborts страница!Забелязах сега че се ороят само пратени.Говоря за условие да има поне един репорт..Galva Dimitrova 1:58 PMче с са си ги пуснали само ло тях и не са гипрашали на клиента. а в този случай ни eправилна пооверката за страницата - зашотоние поовеляваме юзьва лали вижла пепортиили не, а не лали има генепивани в базатаMessage Galva Dimitrova+ Aa €FV faVsco.js°9 JY-20157-AJ-report-not-send-notificatiorProjectMintercomMinterventionMiakeasmith> Djane-php?Lasonmccrean> Djdavidbakr> Djean85> @jeremykendallDiminny> Ojolicode>ustinrainbow• kalnoy> C kelunik> _ Kkszvmanowsk>D larastan> D larave• D laravoli• cobucciMleaque→ madnet1 marc-mabeMmarkroaovski1 mastermindsM microsofiN mockerv> monolog> mtdowling> D myclabsv D nesbotv Mcarbon>Ca.github>D bin>Dlazyv Dsrov ( Carbon© CarbonImmutable.php Xetamhlen©) AskJiminnyReportActivityServiceTest.ph> C Constants( Exceptions> C Land> C7 Laravel→DuistM MessageFormatten> 7PHPStani>M TraitsKC AbstractTranslator.ohoP Callback.ohp(C) Carbon.ohoG CarhonConverterinterfal(c) Carbonimmutable nhnl@ Carboninterface.php© CarbonInterval.php© AskJiminnyReportActivityService.php© AutomatedReportsCommand.phgc) AutomatedReportsCommand lest.onp© ReportController.php© UserPilotClient.phgC) Userlranstormer.phpA simple APl extension for DateTimelmmutable<autodoc generated by composer phodoc sProperties: property $localeDay0fWeek string - the day of week in current localeproperty $shortLocaleDay0fWeek string - the abbreviated day of week in currentlocaleproperty$localeMonthproperty SshortLocaleMonth string - the abbreviated month in current localeintint -1 (for Mondav) throuah 7 (for Sundav.nestamp float|int|string - seconds since the Unix Epochsenquisnuayurweek scring - the day or week in cnollsh$shortEnglishDay0fWeek string - the abbreviated day of week in Englishstring - the month in EnglishSshortEnqLishMonth strina - the abbreviated month in EnalishismilLisecond 1ntSweek |int - 1through 53sint -1 throuch 53int - vear according to ISO week formatproperty | Sage int -does a diffinYears() with default parametersSoffset int - the timezone offset in seconds from UTOSoffcetMinutesint- the timezone offset in minutes from Uiieint - the timezone offset in hours from UTdStimezone CarbontimeZone -the current timezoneproperty Stz CarbonTimeZone - alias of $timezoneproperty $century0fMillennium int - The value of the century starting from theint - The value of the dav startina from the beainnina of thecurrent centuryproperty Sday0fDecadeint - The value of the day starting from the beginning of the: Support Daily - in 59 m100% 52Thu 23 Apr 14:01:13= custom.log= laravel.log4 SF [jiminny@localhost] XA console [PROD]© DatabaseActivities.php© DealsRepository.phpA console [EU]A console (STAGING] Tx: AutoPlaygrounddojiminny vО2 01417 22 2Äselect * trom qroups where 1d = 28select * from plavbooks where id = 179:select * from playbook_categories where id = 1391;select * from users where 1d = 143:select * from crm_profiles where user_id = 143;select * from activities where erm confiquration id = 39 and tvpe = 'confe'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000086f0MAC.SELECT ar.id, ar.uuid, ar.media.type, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repont.idWHERE a.tyRe = 'ask_jiminnx'I TMTT 10÷CSISATINNER JOIN'automated report results'.'report id' = 'automated_reports'.'idWHERE 1=1AND'automated report_results'.'generated_ at' IS NOT NULLANDautomated_report_results'.'sent_at' IS NOT NULLAAnautomated_reports'.'team_ id' = 1AND JSON_ CONTAINS('automated reports'.'recipients'. 143. 'S."users"')SELECT * FROM automated_reports where id = 67;SELECT * FROM automated reponts where id = 42:SELECT * FROM users WHERE id = 143: # aroup 28select * from teams where id = 3143;select * from con confiqurations where id = 500:select * from usens where name = "Intearation Accounti• # 169%SELECT * EROM social accounts WHEREsociable id = 1695.select * fron activities where erm confiaunation id = 30and recording_state = 'recorded' and duration › 60and status = 'completed' and actual_start_time >= '2025-12-01';|sEiEeT + EPOM antivitioc WHEDE nuid +o hinf:458cf015-h014-4000-h092-5/97h2W Windsurf Teams 20:1 UTF-8 f 4 space-...
|
75335
|
|
75225
|
NULL
|
0
|
2026-04-23T10:47:14.485798+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776941234485_m2.jpg...
|
Firefox
|
Jy 20541 extract common traits by Vasil-Jiminny · Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app — Work...
|
True
|
github.com/jiminny/app/pull/12008
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Jy 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1324 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Open
Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 1 hour ago
Vasil-Jiminny
Vasil-Jiminny
commented
1 hour ago
1 hour ago
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Deployment notes:
Deployment notes:
None
Description:
Description:
Extract common functionality (business logic) into traits and helper methods / classs.
Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.
Changes:
Changes:
Added CrmHelperRepository to wrap basic DB operations for CRM services.
Extract ActivityPlaybackTrait, shared for all CRMs.
Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.
Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand "event" function.
Add Activity accessor methods.
Fix a logical issue in PlaybookCategory model. Method
getPlaybook
may return null (for soft deleted playbooks). That change forced a few other changes in the code.
Fix N+1 issue in ConvertLeadActivities.
Various minor code style fixes.
Fixed tests.
Added
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
28
commits
3 hours ago
3 hours ago
@Vasil-Jiminny
Remove obsolete whitespace.
Remove obsolete whitespace.
e2cc6cd
e2cc6cd
@Vasil-Jiminny
Add shorthand methods to Activity model.
Add shorthand methods to Activity model.
9288026
9288026
@Vasil-Jiminny
PlaybookCategory may return a null Playbook, when the playbook is sof…
PlaybookCategory may return a null Playbook, when the playbook is sof…
…
a0d9c65
a0d9c65
@Vasil-Jiminny
An activity may lack a PlaybookCategory.
An activity may lack a PlaybookCategory.
562aaf4
562aaf4
@Vasil-Jiminny
Fix the logical bug in GetDefaultActivityTypeService and test.
Fix the logical bug in GetDefaultActivityTypeService and test.
4856d05
4856d05
@Vasil-Jiminny
Introduce CrmHelperRepository
Introduce CrmHelperRepository
c50dcf3
c50dcf3
@Vasil-Jiminny
Introduce CrmHelperRepository to help with various small DB operation…
Introduce CrmHelperRepository to help with various small DB operation…
…
71f5d64
71f5d64
@Vasil-Jiminny
Introduced ActivityPlaybookTrait and fully covered with tests.
Introduced ActivityPlaybookTrait and fully covered with tests.
bda2b3d
bda2b3d
@Vasil-Jiminny
The test that was not commited.
The test that was not commited.
804049e
804049e
@Vasil-Jiminny
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
…
43151b7
43151b7
@Vasil-Jiminny
Added a very basic FieldHelper class for SF to wrap simple operations.
Added a very basic FieldHelper class for SF to wrap simple operations.
71c50ae
71c50ae
@Vasil-Jiminny
Add a FollowupActivityTrait to wrap the "follow-up" related business …
Add a FollowupActivityTrait to wrap the "follow-up" related business …
…
c6161b7
c6161b7
@Vasil-Jiminny
Drop the inline implementation of "isCustomField", use the helper ins…
Drop the inline implementation of "isCustomField", use the helper ins…
…
78fde79
78fde79
@Vasil-Jiminny
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
c5b1bb6
c5b1bb6
@Vasil-Jiminny
Added full unit test for FollowupActivityTraitTest.
Added full unit test for FollowupActivityTraitTest.
3ab80dc
3ab80dc
@Vasil-Jiminny
Very basic unit test added for FieldHelper.
Very basic unit test added for FieldHelper.
4bd837c
4bd837c
@Vasil-Jiminny
Use hte event dispathcer instead of calling the shorthand function.
Use hte event dispathcer instead of calling the shorthand function.
a42453a
a42453a
@Vasil-Jiminny
Add a few missing annotations.
Add a few missing annotations.
83de27f
83de27f
@Vasil-Jiminny
Fix a test that awaits an event, created inside another event. Instea…
Fix a test that awaits an event, created inside another event. Instea…
…
28cc4db
28cc4db
@Vasil-Jiminny
Drop the namespace for the removed event.
Drop the namespace for the removed event.
7f425c4
7f425c4
@Vasil-Jiminny
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
…
031166a
031166a
@Vasil-Jiminny
Fix all broken test. Inject the new EventDispatcher constructor param…
Fix all broken test. Inject the new EventDispatcher constructor param…
…
7 / 10 checks OK
bf43943
bf43943
@Vasil-Jiminny
ConvertedLeadActivities is updated to fetch lead data only once. It i…
ConvertedLeadActivities is updated to fetch lead data only once. It i…
…
08ca510
08ca510
@Vasil-Jiminny
ConvertedLeadActivities test updated.
ConvertedLeadActivities test updated.
7 / 10 checks OK
3c4390d
3c4390d
@Vasil-Jiminny
Move internal attribute definition higher. Minor code style change.
Move internal attribute definition higher. Minor code style change.
0f3f799
0f3f799
@Vasil-Jiminny
Fix a Service test that I somehow missed to update.
Fix a Service test that I somehow missed to update.
8 / 10 checks OK
8eb3dc8
8eb3dc8
@Vasil-Jiminny
Add missing trailing commas.
Add missing trailing commas.
7 / 10 checks OK
a5b94e9
a5b94e9
@Vasil-Jiminny
More trailing commas.
More trailing commas.
12 / 12 checks OK
6520970
6520970
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested review from
yalokin-jiminny
yalokin-jiminny
and removed request for
yalokin-jiminny
yalokin-jiminny
1 hour ago
1 hour ago
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested a review from
LakyLak
LakyLak
1 hour ago
1 hour ago
Vasil-Jiminny
Vasil-Jiminny
added
4
commits
1 hour ago
1 hour ago
@Vasil-Jiminny
Explain the fix in GetDefaultActivityTypeService
Explain the fix in GetDefaultActivityTypeService
2521ca8
2521ca8
@Vasil-Jiminny
There are a few cases where a NULL playbook category may be passed to…
There are a few cases where a NULL playbook category may be passed to…
…
7d3506f
7d3506f
@Vasil-Jiminny
Fix a bug in Close related to missing playbook categories.
Fix a bug in Close related to missing playbook categories....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.23321144,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.23138298,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.24468085,"top":0.10614525,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.13886672,"width":0.14128989,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.17158818,"width":0.16555852,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"top":0.19313647,"width":0.07962101,"height":0.032721467},"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.24468085,"top":0.20430966,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Saved Reports","depth":4,"bounds":{"left":0.23138298,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Saved Reports","depth":5,"bounds":{"left":0.24468085,"top":0.23703113,"width":0.044049203,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.23138298,"top":0.2585794,"width":0.07962101,"height":0.032721467},"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.24468085,"top":0.2697526,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":4,"bounds":{"left":0.23138298,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app","depth":5,"bounds":{"left":0.24468085,"top":0.30247405,"width":0.14660904,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.29870346,"top":0.29848364,"width":0.007978723,"height":0.01915403},"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.23420878,"top":0.3256185,"width":0.07413564,"height":0.025538707},"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.23420878,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.24517952,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.25631648,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.26745346,"top":0.97007185,"width":0.010638298,"height":0.025538707},"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.2785904,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to content","depth":6,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to content","depth":7,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Homepage (g then d)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"jiminny","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"app","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"app","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Type","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Open Copilot…","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create new...","depth":9,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues(g then i)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Pull requests","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Repositories","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have unread notifications(g then n)","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open user navigation menu","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Repository navigation","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (33)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pull requests","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Agents","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Wiki","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (32)","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security and quality","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Insights","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Review this update","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub account settings","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Jy 20541 extract common traits #12008 Edit title","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Checks pending","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks pending","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Code","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 commits into","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":16,"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 1324 additions & 442 deletions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (5)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Conversation","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (40)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Commits","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"40","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (2)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Checks","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (20)","depth":16,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Files changed","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":14,"bounds":{"left":0.46409574,"top":0.0726257,"width":0.011968086,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard","depth":14,"bounds":{"left":0.48271278,"top":0.058260176,"width":0.20894282,"height":0.042298485},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Jy 20541 extract common traits","depth":16,"bounds":{"left":0.48271278,"top":0.05865922,"width":0.071476065,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jy 20541 extract common traits","depth":17,"bounds":{"left":0.48271278,"top":0.06304868,"width":0.071476065,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":16,"bounds":{"left":0.5568484,"top":0.06304868,"width":0.0028257978,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12008","depth":16,"bounds":{"left":0.5596742,"top":0.06304868,"width":0.013630319,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":18,"bounds":{"left":0.48271278,"top":0.08339984,"width":0.02642952,"height":0.011971269},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":19,"bounds":{"left":0.48271278,"top":0.08339984,"width":0.02642952,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 40 commits into","depth":18,"bounds":{"left":0.51047206,"top":0.08339984,"width":0.06050532,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":18,"bounds":{"left":0.57230717,"top":0.08180367,"width":0.018450798,"height":0.015163607},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":19,"bounds":{"left":0.57430184,"top":0.083798885,"width":0.014461436,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":19,"bounds":{"left":0.59208775,"top":0.08339984,"width":0.008643617,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541-extract-common-traits","depth":19,"bounds":{"left":0.60206115,"top":0.08180367,"width":0.07596409,"height":0.015163607},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541-extract-common-traits","depth":20,"bounds":{"left":0.6040558,"top":0.083798885,"width":0.07197473,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":19,"bounds":{"left":0.679355,"top":0.07821229,"width":0.00930851,"height":0.022346368},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Conversation","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show options","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Vasil-Jiminny commented 1 hour ago","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JIRA: JY-20541","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JIRA:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20541","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20541","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deployment notes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployment notes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"None","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Description:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract common functionality (business logic) into traits and helper methods / classs.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Changes:","depth":16,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Changes:","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added CrmHelperRepository to wrap basic DB operations for CRM services.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract ActivityPlaybackTrait, shared for all CRMs.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand \"event\" function.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add Activity accessor methods.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fix a logical issue in PlaybookCategory model. Method","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"getPlaybook","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"may return null (for soft deleted playbooks). That change forced a few other changes in the code.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fix N+1 issue in ConvertLeadActivities.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Various minor code style fixes.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fixed tests.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Added","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"added","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3 hours ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3 hours ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Remove obsolete whitespace.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Remove obsolete whitespace.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"e2cc6cd","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"e2cc6cd","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add shorthand methods to Activity model.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add shorthand methods to Activity model.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"9288026","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9288026","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"PlaybookCategory may return a null Playbook, when the playbook is sof…","depth":14,"help_text":"PlaybookCategory may return a null Playbook, when the playbook is soft deleted.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PlaybookCategory may return a null Playbook, when the playbook is sof…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"a0d9c65","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a0d9c65","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"An activity may lack a PlaybookCategory.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"An activity may lack a PlaybookCategory.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"562aaf4","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"562aaf4","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix the logical bug in GetDefaultActivityTypeService and test.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix the logical bug in GetDefaultActivityTypeService and test.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4856d05","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4856d05","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduce CrmHelperRepository","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduce CrmHelperRepository","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"c50dcf3","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c50dcf3","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduce CrmHelperRepository to help with various small DB operation…","depth":14,"help_text":"Introduce CrmHelperRepository to help with various small DB operations inlined in the Services.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduce CrmHelperRepository to help with various small DB operation…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"71f5d64","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"71f5d64","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Introduced ActivityPlaybookTrait and fully covered with tests.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Introduced ActivityPlaybookTrait and fully covered with tests.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"bda2b3d","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"bda2b3d","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"The test that was not commited.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"The test that was not commited.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"804049e","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"804049e","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of…","depth":14,"help_text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of tests for the sake of using the trait wrapped methods.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BaseService uses ActivityPlaybookTrait. Drop direct implementation of…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"43151b7","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"43151b7","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Added a very basic FieldHelper class for SF to wrap simple operations.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Added a very basic FieldHelper class for SF to wrap simple operations.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"71c50ae","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"71c50ae","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business …","depth":14,"help_text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business logic injected directly into the service.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add a FollowupActivityTrait to wrap the \"follow-up\" related business …","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"c6161b7","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c6161b7","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Drop the inline implementation of \"isCustomField\", use the helper ins…","depth":14,"help_text":"Drop the inline implementation of \"isCustomField\", use the helper instead.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drop the inline implementation of \"isCustomField\", use the helper ins…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"78fde79","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"78fde79","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Delete SaveFollowupActivity for Task & Event. Inject the trait instead.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delete SaveFollowupActivity for Task & Event. Inject the trait instead.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"c5b1bb6","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"c5b1bb6","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Added full unit test for FollowupActivityTraitTest.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Added full unit test for FollowupActivityTraitTest.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"3ab80dc","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3ab80dc","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Very basic unit test added for FieldHelper.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Very basic unit test added for FieldHelper.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"4bd837c","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4bd837c","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Use hte event dispathcer instead of calling the shorthand function.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use hte event dispathcer instead of calling the shorthand function.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"a42453a","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a42453a","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add a few missing annotations.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add a few missing annotations.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"83de27f","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"83de27f","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix a test that awaits an event, created inside another event. Instea…","depth":14,"help_text":"Fix a test that awaits an event, created inside another event. Instead, listner for the \"parent\" event.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix a test that awaits an event, created inside another event. Instea…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"28cc4db","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28cc4db","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Drop the namespace for the removed event.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Drop the namespace for the removed event.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"7f425c4","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7f425c4","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…","depth":14,"help_text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance required a new constructor parameter.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"031166a","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"031166a","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix all broken test. Inject the new EventDispatcher constructor param…","depth":14,"help_text":"Fix all broken test. Inject the new EventDispatcher constructor parameter.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix all broken test. Inject the new EventDispatcher constructor param…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"bf43943","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"bf43943","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"ConvertedLeadActivities is updated to fetch lead data only once. It i…","depth":14,"help_text":"ConvertedLeadActivities is updated to fetch lead data only once. It is also queued in `crm-update` and delayed for 5 seconds. An obsolete repository is removed.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertedLeadActivities is updated to fetch lead data only once. It i…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"08ca510","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"08ca510","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"ConvertedLeadActivities test updated.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ConvertedLeadActivities test updated.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"3c4390d","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3c4390d","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Move internal attribute definition higher. Minor code style change.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Move internal attribute definition higher. Minor code style change.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"0f3f799","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"0f3f799","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix a Service test that I somehow missed to update.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix a Service test that I somehow missed to update.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"8 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"8eb3dc8","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"8eb3dc8","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Add missing trailing commas.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add missing trailing commas.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"7 / 10 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"a5b94e9","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"a5b94e9","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"More trailing commas.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More trailing commas.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"12 / 12 checks OK","depth":14,"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"6520970","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6520970","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested review from","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and removed request for","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"yalokin-jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"yalokin-jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested a review from","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"LakyLak","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"LakyLak","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Vasil-Jiminny","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vasil-Jiminny","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"added","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commits","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"1 hour ago","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1 hour ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Explain the fix in GetDefaultActivityTypeService","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explain the fix in GetDefaultActivityTypeService","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"2521ca8","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2521ca8","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"There are a few cases where a NULL playbook category may be passed to…","depth":14,"help_text":"There are a few cases where a NULL playbook category may be passed to method \"getCrmType\". Allow null to prevent type errors.","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"There are a few cases where a NULL playbook category may be passed to…","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"…","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"7d3506f","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"7d3506f","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@Vasil-Jiminny","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Fix a bug in Close related to missing playbook categories.","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix a bug in Close related to missing playbook categories.","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3285695235736866937
|
-5569415739009767556
|
idle
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
New Tab
New Tab
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
AI reports promotion pages by nikolay-yankov · Pull Request #11998 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
JY-9712 | Nuges to expire after one year by nikolaybiaivanov · Pull Request #11981 · jiminny/app
Jiminny
Jiminny
Userpilot | Saved Reports
Userpilot | Saved Reports
Jiminny
Jiminny
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Jy 20541 extract common traits by Vasil-Jiminny · Pull Request #12008 · jiminny/app
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to content
Skip to content
Open menu
Homepage (g then d)
jiminny
jiminny
app
app
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues(g then i)
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Pull requests (33)
Pull requests
(
33
)
Agents
Agents
Actions
Actions
Wiki
Wiki
Security and quality (32)
Security and quality
(
32
)
Insights
Insights
Settings
Settings
Important update
Important update
On April 24 we'll start using GitHub Copilot interaction data for AI model training unless you opt out.
Review this update
Review this update
and manage your preferences in your
GitHub account settings
GitHub account settings
.
Dismiss banner
Jy 20541 extract common traits #12008 Edit title
Jy 20541 extract common traits
#
12008
Edit title
Checks pending
Checks pending
Code
Code
Open
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Lines changed: 1324 additions & 442 deletions
Conversation (5)
Conversation
(
5
)
Commits (40)
Commits
(
40
)
Checks (2)
Checks
(
2
)
Files changed (20)
Files changed
(
20
)
Open
Jy 20541 extract common traits #12008 Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits Copy head branch name to clipboard
Jy 20541 extract common traits
Jy 20541 extract common traits
#
12008
Vasil-Jiminny
Vasil-Jiminny
wants to merge 40 commits into
master
master
from
JY-20541-extract-common-traits
JY-20541-extract-common-traits
Copy head branch name to clipboard
Conversation
Conversation
@Vasil-Jiminny
Show options
Vasil-Jiminny commented 1 hour ago
Vasil-Jiminny
Vasil-Jiminny
commented
1 hour ago
1 hour ago
JIRA: JY-20541
JIRA:
JY-20541
JY-20541
Deployment notes:
Deployment notes:
None
Description:
Description:
Extract common functionality (business logic) into traits and helper methods / classs.
Remove an N+1 problem related to converted leads. Queue the execution of ConvertedLead listener with 5 second delay.
Changes:
Changes:
Added CrmHelperRepository to wrap basic DB operations for CRM services.
Extract ActivityPlaybackTrait, shared for all CRMs.
Extract FollowupActivityTrait - slowly move business logic outside of the main Service classes.
Salesforce Service constructor receives an EventDispatcher as a parameter for internal use. Much better for testing instead of shorthand "event" function.
Add Activity accessor methods.
Fix a logical issue in PlaybookCategory model. Method
getPlaybook
may return null (for soft deleted playbooks). That change forced a few other changes in the code.
Fix N+1 issue in ConvertLeadActivities.
Various minor code style fixes.
Fixed tests.
Added
Add or remove reactions
Vasil-Jiminny
Vasil-Jiminny
added
28
commits
3 hours ago
3 hours ago
@Vasil-Jiminny
Remove obsolete whitespace.
Remove obsolete whitespace.
e2cc6cd
e2cc6cd
@Vasil-Jiminny
Add shorthand methods to Activity model.
Add shorthand methods to Activity model.
9288026
9288026
@Vasil-Jiminny
PlaybookCategory may return a null Playbook, when the playbook is sof…
PlaybookCategory may return a null Playbook, when the playbook is sof…
…
a0d9c65
a0d9c65
@Vasil-Jiminny
An activity may lack a PlaybookCategory.
An activity may lack a PlaybookCategory.
562aaf4
562aaf4
@Vasil-Jiminny
Fix the logical bug in GetDefaultActivityTypeService and test.
Fix the logical bug in GetDefaultActivityTypeService and test.
4856d05
4856d05
@Vasil-Jiminny
Introduce CrmHelperRepository
Introduce CrmHelperRepository
c50dcf3
c50dcf3
@Vasil-Jiminny
Introduce CrmHelperRepository to help with various small DB operation…
Introduce CrmHelperRepository to help with various small DB operation…
…
71f5d64
71f5d64
@Vasil-Jiminny
Introduced ActivityPlaybookTrait and fully covered with tests.
Introduced ActivityPlaybookTrait and fully covered with tests.
bda2b3d
bda2b3d
@Vasil-Jiminny
The test that was not commited.
The test that was not commited.
804049e
804049e
@Vasil-Jiminny
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
BaseService uses ActivityPlaybookTrait. Drop direct implementation of…
…
43151b7
43151b7
@Vasil-Jiminny
Added a very basic FieldHelper class for SF to wrap simple operations.
Added a very basic FieldHelper class for SF to wrap simple operations.
71c50ae
71c50ae
@Vasil-Jiminny
Add a FollowupActivityTrait to wrap the "follow-up" related business …
Add a FollowupActivityTrait to wrap the "follow-up" related business …
…
c6161b7
c6161b7
@Vasil-Jiminny
Drop the inline implementation of "isCustomField", use the helper ins…
Drop the inline implementation of "isCustomField", use the helper ins…
…
78fde79
78fde79
@Vasil-Jiminny
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
Delete SaveFollowupActivity for Task & Event. Inject the trait instead.
c5b1bb6
c5b1bb6
@Vasil-Jiminny
Added full unit test for FollowupActivityTraitTest.
Added full unit test for FollowupActivityTraitTest.
3ab80dc
3ab80dc
@Vasil-Jiminny
Very basic unit test added for FieldHelper.
Very basic unit test added for FieldHelper.
4bd837c
4bd837c
@Vasil-Jiminny
Use hte event dispathcer instead of calling the shorthand function.
Use hte event dispathcer instead of calling the shorthand function.
a42453a
a42453a
@Vasil-Jiminny
Add a few missing annotations.
Add a few missing annotations.
83de27f
83de27f
@Vasil-Jiminny
Fix a test that awaits an event, created inside another event. Instea…
Fix a test that awaits an event, created inside another event. Instea…
…
28cc4db
28cc4db
@Vasil-Jiminny
Drop the namespace for the removed event.
Drop the namespace for the removed event.
7f425c4
7f425c4
@Vasil-Jiminny
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
Fix the DeleteObjectsTrait test. The Salesforce tested instance requi…
…
031166a
031166a
@Vasil-Jiminny
Fix all broken test. Inject the new EventDispatcher constructor param…
Fix all broken test. Inject the new EventDispatcher constructor param…
…
7 / 10 checks OK
bf43943
bf43943
@Vasil-Jiminny
ConvertedLeadActivities is updated to fetch lead data only once. It i…
ConvertedLeadActivities is updated to fetch lead data only once. It i…
…
08ca510
08ca510
@Vasil-Jiminny
ConvertedLeadActivities test updated.
ConvertedLeadActivities test updated.
7 / 10 checks OK
3c4390d
3c4390d
@Vasil-Jiminny
Move internal attribute definition higher. Minor code style change.
Move internal attribute definition higher. Minor code style change.
0f3f799
0f3f799
@Vasil-Jiminny
Fix a Service test that I somehow missed to update.
Fix a Service test that I somehow missed to update.
8 / 10 checks OK
8eb3dc8
8eb3dc8
@Vasil-Jiminny
Add missing trailing commas.
Add missing trailing commas.
7 / 10 checks OK
a5b94e9
a5b94e9
@Vasil-Jiminny
More trailing commas.
More trailing commas.
12 / 12 checks OK
6520970
6520970
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested review from
yalokin-jiminny
yalokin-jiminny
and removed request for
yalokin-jiminny
yalokin-jiminny
1 hour ago
1 hour ago
@Vasil-Jiminny
Vasil-Jiminny
Vasil-Jiminny
requested a review from
LakyLak
LakyLak
1 hour ago
1 hour ago
Vasil-Jiminny
Vasil-Jiminny
added
4
commits
1 hour ago
1 hour ago
@Vasil-Jiminny
Explain the fix in GetDefaultActivityTypeService
Explain the fix in GetDefaultActivityTypeService
2521ca8
2521ca8
@Vasil-Jiminny
There are a few cases where a NULL playbook category may be passed to…
There are a few cases where a NULL playbook category may be passed to…
…
7d3506f
7d3506f
@Vasil-Jiminny
Fix a bug in Close related to missing playbook categories.
Fix a bug in Close related to missing playbook categories....
|
75223
|