|
19331
|
411
|
15
|
2026-04-15T07:31:40.493706+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776238300493_m1.jpg...
|
Firefox
|
Userpilot — Work
|
1
|
run.userpilot.io/login
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Extensions
Extensions
Level up your browsing with Extensions
Extensions
Level up your browsing with extensions
Level up your browsing with extensions
Personalize Firefox by changing how it looks and performs or boosting privacy and safety.
Discover extensions
Discover extensions
Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In with Google For Work
Sign In with Google For Work
Or Sign In with Email
Work Email
Work Email
Password
Password
Toggle password visibility
Forgot password?
Forgot password?
Continue with Email
Continue with Email
You can also continue with
Enterprise SAML SSO
Enterprise SAML SSO
Don’t have an account?
Sign Up
Sign Up
© Userpilot, Inc.
Terms of Use
Terms of Use
.
Privacy Policy
Privacy Policy
Introducing Email Feature
Introducing Email Feature
Send lifecycle messages based on real-time user signals.
100,000 free emails/month....
|
[{"role":"AXHeading","text" [{"role":"AXHeading","text":"Extensions","depth":3,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extensions","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Level up your browsing with extensions","depth":3,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level up your browsing with extensions","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Personalize Firefox by changing how it looks and performs or boosting privacy and safety.","depth":4,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Discover extensions","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Discover extensions","depth":6,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","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":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,550) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sign In with Google For Work","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign In with Google For Work","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Or Sign In with Email","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Work Email","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Work Email","depth":17,"help_text":"","placeholder":"name@work.com","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Password","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Password","depth":17,"help_text":"","placeholder":"••••••••••","role_description":"secure text field","subrole":"AXSecureTextField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Toggle password visibility","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Forgot password?","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forgot password?","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Continue with Email","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Continue with Email","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can also continue with","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise SAML SSO","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise SAML SSO","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Don’t have an account?","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign Up","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign Up","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"© Userpilot, Inc.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Use","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Use","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Introducing Email Feature","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introducing Email Feature","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Send lifecycle messages based on real-time user signals.","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100,000 free emails/month.","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5142255980957314351
|
8836417956661973124
|
click
|
accessibility
|
NULL
|
Extensions
Extensions
Level up your browsing with Extensions
Extensions
Level up your browsing with extensions
Level up your browsing with extensions
Personalize Firefox by changing how it looks and performs or boosting privacy and safety.
Discover extensions
Discover extensions
Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In with Google For Work
Sign In with Google For Work
Or Sign In with Email
Work Email
Work Email
Password
Password
Toggle password visibility
Forgot password?
Forgot password?
Continue with Email
Continue with Email
You can also continue with
Enterprise SAML SSO
Enterprise SAML SSO
Don’t have an account?
Sign Up
Sign Up
© Userpilot, Inc.
Terms of Use
Terms of Use
.
Privacy Policy
Privacy Policy
Introducing Email Feature
Introducing Email Feature
Send lifecycle messages based on real-time user signals.
100,000 free emails/month....
|
NULL
|
|
19332
|
412
|
25
|
2026-04-15T07:31:40.493720+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776238300493_m2.jpg...
|
Firefox
|
Userpilot — Work
|
1
|
run.userpilot.io/login
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Extensions
Extensions
Level up your browsing with Extensions
Extensions
Level up your browsing with extensions
Level up your browsing with extensions
Personalize Firefox by changing how it looks and performs or boosting privacy and safety.
Discover extensions
Discover extensions
Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In with Google For Work
Sign In with Google For Work
Or Sign In with Email
Work Email
Work Email
Password
Password
Toggle password visibility
Forgot password?
Forgot password?
Continue with Email
Continue with Email
You can also continue with
Enterprise SAML SSO
Enterprise SAML SSO
Don’t have an account?
Sign Up
Sign Up
© Userpilot, Inc.
Terms of Use
Terms of Use
.
Privacy Policy
Privacy Policy
Introducing Email Feature
Introducing Email Feature
Send lifecycle messages based on real-time user signals.
100,000 free emails/month....
|
[{"role":"AXHeading","text" [{"role":"AXHeading","text":"Extensions","depth":3,"bounds":{"left":0.8101562,"top":0.05277778,"width":0.14101562,"height":0.011111111},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Extensions","depth":5,"bounds":{"left":0.8671875,"top":0.05277778,"width":0.026953125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Level up your browsing with extensions","depth":3,"bounds":{"left":0.8101562,"top":0.18611111,"width":0.14101562,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Level up your browsing with extensions","depth":4,"bounds":{"left":0.81328124,"top":0.18888889,"width":0.08828125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Personalize Firefox by changing how it looks and performs or boosting privacy and safety.","depth":4,"bounds":{"left":0.81328124,"top":0.20833333,"width":0.11445312,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Discover extensions","depth":4,"bounds":{"left":0.81328124,"top":0.24166666,"width":0.13476562,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Discover extensions","depth":6,"bounds":{"left":0.8558594,"top":0.24722221,"width":0.049609374,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,550) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.20277777,"width":0.009375,"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.003125,"top":0.22638889,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Sign In with Google For Work","depth":16,"bounds":{"left":0.2667969,"top":0.35902777,"width":0.107421875,"height":0.034722224},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign In with Google For Work","depth":19,"bounds":{"left":0.29257813,"top":0.37083334,"width":0.07148437,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Or Sign In with Email","depth":18,"bounds":{"left":0.29414064,"top":0.41180557,"width":0.052734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Work Email","depth":17,"bounds":{"left":0.246875,"top":0.43958333,"width":0.030078124,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Work Email","depth":17,"bounds":{"left":0.246875,"top":0.45694444,"width":0.146875,"height":0.031944446},"help_text":"","placeholder":"name@work.com","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Password","depth":17,"bounds":{"left":0.246875,"top":0.49791667,"width":0.025390625,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Password","depth":17,"bounds":{"left":0.246875,"top":0.5152778,"width":0.11953125,"height":0.031944446},"help_text":"","placeholder":"••••••••••","role_description":"secure text field","subrole":"AXSecureTextField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Toggle password visibility","depth":18,"bounds":{"left":0.36953124,"top":0.51458335,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Forgot password?","depth":16,"bounds":{"left":0.246875,"top":0.55833334,"width":0.146875,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forgot password?","depth":19,"bounds":{"left":0.246875,"top":0.5590278,"width":0.043359376,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Continue with Email","depth":17,"bounds":{"left":0.259375,"top":0.58263886,"width":0.12226562,"height":0.034722224},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Continue with Email","depth":19,"bounds":{"left":0.29375,"top":0.59305555,"width":0.053125,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You can also continue with","depth":16,"bounds":{"left":0.26171875,"top":0.79305553,"width":0.06328125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise SAML SSO","depth":16,"bounds":{"left":0.3265625,"top":0.79305553,"width":0.05234375,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise SAML SSO","depth":18,"bounds":{"left":0.3265625,"top":0.79305553,"width":0.05234375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Don’t have an account?","depth":17,"bounds":{"left":0.2824219,"top":0.8229167,"width":0.0546875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign Up","depth":17,"bounds":{"left":0.34023437,"top":0.8229167,"width":0.018359374,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign Up","depth":18,"bounds":{"left":0.34023437,"top":0.8229167,"width":0.018359374,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"© Userpilot, Inc.","depth":16,"bounds":{"left":0.3015625,"top":0.8590278,"width":0.0375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Use","depth":16,"bounds":{"left":0.2859375,"top":0.88819444,"width":0.03203125,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Use","depth":17,"bounds":{"left":0.2859375,"top":0.88819444,"width":0.03203125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":16,"bounds":{"left":0.3191406,"top":0.8888889,"width":0.001171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":16,"bounds":{"left":0.321875,"top":0.88819444,"width":0.033203125,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":17,"bounds":{"left":0.321875,"top":0.88819444,"width":0.033203125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Introducing Email Feature","depth":15,"bounds":{"left":0.6269531,"top":0.22638889,"width":0.29375,"height":0.02638889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introducing Email Feature","depth":16,"bounds":{"left":0.69257814,"top":0.22430556,"width":0.16210938,"height":0.03125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Send lifecycle messages based on real-time user signals.","depth":18,"bounds":{"left":0.6855469,"top":0.26666668,"width":0.1546875,"height":0.015277778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"100,000 free emails/month.","depth":19,"bounds":{"left":0.7457031,"top":0.26666668,"width":0.11640625,"height":0.029861111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5142255980957314351
|
8836417956661973124
|
click
|
accessibility
|
NULL
|
Extensions
Extensions
Level up your browsing with Extensions
Extensions
Level up your browsing with extensions
Level up your browsing with extensions
Personalize Firefox by changing how it looks and performs or boosting privacy and safety.
Discover extensions
Discover extensions
Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In with Google For Work
Sign In with Google For Work
Or Sign In with Email
Work Email
Work Email
Password
Password
Toggle password visibility
Forgot password?
Forgot password?
Continue with Email
Continue with Email
You can also continue with
Enterprise SAML SSO
Enterprise SAML SSO
Don’t have an account?
Sign Up
Sign Up
© Userpilot, Inc.
Terms of Use
Terms of Use
.
Privacy Policy
Privacy Policy
Introducing Email Feature
Introducing Email Feature
Send lifecycle messages based on real-time user signals.
100,000 free emails/month....
|
19330
|
|
31916
|
648
|
27
|
2026-04-16T06:43:32.778447+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321812778_m1.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/blob/e93e7b7433974694bbc987 github.com/jiminny/app/blob/e93e7b7433974694bbc9876b07a0cd5d9cc25c07/app/Services/Crm/ProspectCache.php...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","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":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,558) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · 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":"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":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · 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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"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":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (Exception $e) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->error('[StaleRecordValidator] Failed to sync record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'error' => $e->getMessage(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5107335856771353086
|
8835009701668025016
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}...
|
31914
|
|
31917
|
649
|
38
|
2026-04-16T06:43:32.778484+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321812778_m2.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/blob/e93e7b7433974694bbc987 github.com/jiminny/app/blob/e93e7b7433974694bbc9876b07a0cd5d9cc25c07/app/Services/Crm/ProspectCache.php...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,558) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.22460938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"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.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.2171875,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.23125,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.228125,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.0984375,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"bounds":{"left":0.1953125,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.2109375,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.09335937,"top":0.12847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.09335937,"top":0.13055556,"width":0.14101562,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.024609376,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.023611112,"width":0.06679688,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":0.0625,"width":0.060546875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":0.10138889,"width":0.056640625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"bounds":{"left":0.14375,"top":0.15972222,"width":0.07382812,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"bounds":{"left":0.14375,"top":0.2375,"width":0.025390625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"bounds":{"left":0.14375,"top":0.27638888,"width":0.06796875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.31527779,"width":0.07265625,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.4125,"width":0.07109375,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.50972223,"width":0.07382812,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.60694444,"width":0.071875,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"bounds":{"left":0.14375,"top":0.70416665,"width":0.023046875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"bounds":{"left":0.14375,"top":0.7430556,"width":0.0703125,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"bounds":{"left":0.14375,"top":0.78194445,"width":0.07109375,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.14375,"top":0.8402778,"width":0.021484375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"bounds":{"left":0.14375,"top":0.87916666,"width":0.065625,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"bounds":{"left":0.14375,"top":0.91805553,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.99583334,"width":0.06679688,"height":0.0041666627},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.060546875,"height":-0.03472221},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.056640625,"height":-0.07361114},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (Exception $e) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->error('[StaleRecordValidator] Failed to sync record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'error' => $e->getMessage(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-831695838692164508
|
8835009701668025016
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}...
|
NULL
|
|
31899
|
648
|
19
|
2026-04-16T06:41:37.471152+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321697471_m1.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/blob/e93e7b7433974694bbc987 github.com/jiminny/app/blob/e93e7b7433974694bbc9876b07a0cd5d9cc25c07/app/Services/Crm/ProspectCache.php...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","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":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sprint Review - Apr 15 - Chat","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · 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":"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":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · 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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"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":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (Exception $e) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->error('[StaleRecordValidator] Failed to sync record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'error' => $e->getMessage(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmObject->getCrmProviderId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3653038172098153267
|
8835009701668020910
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));...
|
31897
|
|
31901
|
648
|
20
|
2026-04-16T06:42:07.232460+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321727232_m1.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/blob/e93e7b7433974694bbc987 github.com/jiminny/app/blob/e93e7b7433974694bbc9876b07a0cd5d9cc25c07/app/Services/Crm/ProspectCache.php...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","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":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sprint Review - Apr 15 - Chat","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · 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":"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":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · 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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"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":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8458361619974272078
|
8835009701668020874
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {...
|
NULL
|
|
31902
|
649
|
30
|
2026-04-16T06:42:07.232336+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321727232_m2.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/blob/e93e7b7433974694bbc987 github.com/jiminny/app/blob/e93e7b7433974694bbc9876b07a0cd5d9cc25c07/app/Services/Crm/ProspectCache.php...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sprint Review - Apr 15 - Chat","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.22460938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"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.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.2171875,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.23125,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.228125,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.0984375,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"bounds":{"left":0.1953125,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.2109375,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.09335937,"top":0.12847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.09335937,"top":0.13055556,"width":0.14101562,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.024609376,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.023611112,"width":0.06679688,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":0.0625,"width":0.060546875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":0.10138889,"width":0.056640625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"bounds":{"left":0.14375,"top":0.15972222,"width":0.07382812,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"bounds":{"left":0.14375,"top":0.2375,"width":0.025390625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"bounds":{"left":0.14375,"top":0.27638888,"width":0.06796875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.31527779,"width":0.07265625,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.4125,"width":0.07109375,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.50972223,"width":0.07382812,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.60694444,"width":0.071875,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"bounds":{"left":0.14375,"top":0.70416665,"width":0.023046875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"bounds":{"left":0.14375,"top":0.7430556,"width":0.0703125,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"bounds":{"left":0.14375,"top":0.78194445,"width":0.07109375,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.14375,"top":0.8402778,"width":0.021484375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"bounds":{"left":0.14375,"top":0.87916666,"width":0.065625,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"bounds":{"left":0.14375,"top":0.91805553,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.99583334,"width":0.06679688,"height":0.0041666627},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.060546875,"height":-0.03472221},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.056640625,"height":-0.07361114},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3709956173758211385
|
8835009701668020362
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;...
|
NULL
|
|
20945
|
464
|
12
|
2026-04-15T09:43:15.624750+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776246195624_m2.jpg...
|
Firefox
|
JY-18909: Print company logo debugging information JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet — Work...
|
1
|
github.com/jiminny/prophet/pull/472
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,552) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
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
prophet
prophet
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues
Pull requests
Repositories
You have no unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Issues
Issues
Pull requests (6)
Pull requests
(
6
)
Agents
Agents
Actions
Actions
Projects
Projects
Wiki
Wiki
Security and quality (20)
Security and quality
(
20
)
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
steliyan-g
steliyan-g
requested your review on this pull request.
Add your review
Add your review
JY-18909: Print company logo debugging information #472 Edit title
JY-18909: Print company logo debugging information
#
472
Edit title
View statusView status
Loading
Loading merge status
Code
Code
Open
steliyan-g
steliyan-g
wants to merge 1 commit into
master
master
from
JY-18909-debug-company-logo
JY-18909-debug-company-logo
Copy head branch name to clipboard
Lines changed: 17 additions & 0 deletions
Conversation (3)
Conversation
(
3
)
Commits (1)
Commits
(
1
)
Checks (4)
Checks
(
4
)
Files changed (1)
Files changed
(
1
)
Conversation
Conversation
@steliyan-g
Show options
steliyan-g commented 16 minutes ago
steliyan-g
steliyan-g
commented
16 minutes ago
16 minutes ago
No description provided.
Add or remove reactions
@steliyan-g
JY-18909: Print company logo debugging information
JY-18909: Print company logo debugging information
3 / 4 checks OK
2ad20d6
2ad20d6
@steliyan-g
Show options
Author
steliyan-g commented 16 minutes ago
steliyan-g
steliyan-g
commented
16 minutes ago
16 minutes ago...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,552) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.21367188,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.28819445,"width":0.009375,"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.003125,"top":0.31180555,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.09375,"top":0.045138888,"width":0.000390625,"height":0.00069444446},"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.09375,"top":0.046527777,"width":0.003515625,"height":0.18680556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open menu","depth":10,"bounds":{"left":0.1,"top":0.05625,"width":0.0125,"height":0.022222223},"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.1171875,"top":0.05625,"width":0.0125,"height":0.022222223},"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.1328125,"top":0.05625,"width":0.022265624,"height":0.022222223},"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.13515624,"top":0.061805554,"width":0.017578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"prophet","depth":12,"bounds":{"left":0.1609375,"top":0.05625,"width":0.03203125,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prophet","depth":14,"bounds":{"left":0.16328125,"top":0.061805554,"width":0.02109375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search or jump to…","depth":9,"bounds":{"left":0.7792969,"top":0.05625,"width":0.07734375,"height":0.022222223},"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.79375,"top":0.061805554,"width":0.0140625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":12,"bounds":{"left":0.809375,"top":0.0625,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to search","depth":12,"bounds":{"left":0.8140625,"top":0.061805554,"width":0.025,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Chat with Copilot","depth":10,"bounds":{"left":0.85898435,"top":0.05625,"width":0.0125,"height":0.022222223},"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.87109375,"top":0.05625,"width":0.01015625,"height":0.022222223},"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.890625,"top":0.05625,"width":0.01953125,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Issues","depth":9,"bounds":{"left":0.91328126,"top":0.05625,"width":0.0125,"height":0.022222223},"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.92890626,"top":0.05625,"width":0.0125,"height":0.022222223},"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.94453126,"top":0.05625,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"You have no unread notifications(g then n)","depth":9,"bounds":{"left":0.96015626,"top":0.05625,"width":0.0125,"height":0.022222223},"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.97578126,"top":0.05625,"width":0.0125,"height":0.022222223},"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.09335937,"top":0.044444446,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Repository navigation","depth":10,"bounds":{"left":0.09335937,"top":0.046527777,"width":0.09257813,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":12,"bounds":{"left":0.1,"top":0.08680555,"width":0.029296875,"height":0.022916667},"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.1125,"top":0.09236111,"width":0.013671875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Issues","depth":12,"bounds":{"left":0.13242188,"top":0.08680555,"width":0.0328125,"height":0.022916667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"bounds":{"left":0.14570312,"top":0.09236111,"width":0.015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (6)","depth":12,"bounds":{"left":0.16835937,"top":0.08680555,"width":0.06171875,"height":0.022916667},"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.18164062,"top":0.09236111,"width":0.0328125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.21835938,"top":0.099305555,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":14,"bounds":{"left":0.221875,"top":0.099305555,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.22539063,"top":0.099305555,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Agents","depth":12,"bounds":{"left":0.23320313,"top":0.08680555,"width":0.033984374,"height":0.022916667},"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.24609375,"top":0.09236111,"width":0.017578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Actions","depth":12,"bounds":{"left":0.2703125,"top":0.08680555,"width":0.035546876,"height":0.022916667},"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.28359374,"top":0.09236111,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":12,"bounds":{"left":0.30898437,"top":0.08680555,"width":0.0375,"height":0.022916667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":14,"bounds":{"left":0.32226562,"top":0.09236111,"width":0.020703126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Wiki","depth":12,"bounds":{"left":0.34960938,"top":0.08680555,"width":0.026953125,"height":0.022916667},"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.3625,"top":0.09236111,"width":0.010546875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (20)","depth":12,"bounds":{"left":0.3796875,"top":0.08680555,"width":0.08320312,"height":0.022916667},"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.39375,"top":0.09236111,"width":0.05,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.44804686,"top":0.099305555,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":14,"bounds":{"left":0.4515625,"top":0.099305555,"width":0.006640625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.45820314,"top":0.099305555,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Insights","depth":12,"bounds":{"left":0.46601564,"top":0.08680555,"width":0.036328126,"height":0.022916667},"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.47890624,"top":0.09236111,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Settings","depth":12,"bounds":{"left":0.5054687,"top":0.08680555,"width":0.037890624,"height":0.022916667},"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.51875,"top":0.09236111,"width":0.020703126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"bounds":{"left":0.10976563,"top":0.125,"width":0.000390625,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"bounds":{"left":0.10976563,"top":0.12638889,"width":0.04609375,"height":0.011805556},"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.10976563,"top":0.12638889,"width":0.25351563,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"bounds":{"left":0.36328125,"top":0.12638889,"width":0.048046876,"height":0.011805556},"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.36328125,"top":0.12638889,"width":0.048046876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"bounds":{"left":0.41132814,"top":0.12638889,"width":0.096875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"bounds":{"left":0.50820315,"top":0.12638889,"width":0.061328124,"height":0.011805556},"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.50820315,"top":0.12638889,"width":0.061328124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.56953126,"top":0.12638889,"width":0.0015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"bounds":{"left":0.9785156,"top":0.12083333,"width":0.0125,"height":0.022222223},"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.32109374,"top":0.17569445,"width":0.000390625,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review requested","depth":16,"bounds":{"left":0.32109374,"top":0.17708333,"width":0.046875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"steliyan-g","depth":15,"bounds":{"left":0.32109374,"top":0.17708333,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"steliyan-g","depth":16,"bounds":{"left":0.32109374,"top":0.17708333,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"requested your review on this pull request.","depth":15,"bounds":{"left":0.34921876,"top":0.17708333,"width":0.107421875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add your review","depth":14,"bounds":{"left":0.73476565,"top":0.17291667,"width":0.043359376,"height":0.019444445},"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.73828125,"top":0.17777778,"width":0.036328126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"JY-18909: Print company logo debugging information #472 Edit title","depth":13,"bounds":{"left":0.30664062,"top":0.21041666,"width":0.33359376,"height":0.027777778},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-18909: Print company logo debugging information","depth":14,"bounds":{"left":0.30664062,"top":0.21111111,"width":0.28710938,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.596875,"top":0.21111111,"width":0.0078125,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"472","depth":15,"bounds":{"left":0.6046875,"top":0.21111111,"width":0.021484375,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"bounds":{"left":0.62773436,"top":0.21319444,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"View statusView status","depth":13,"bounds":{"left":0.70585936,"top":0.21597221,"width":0.041015625,"height":0.022222223},"role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loading","depth":15,"bounds":{"left":0.7234375,"top":0.22361112,"width":0.0203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Loading merge status","depth":15,"bounds":{"left":0.70585936,"top":0.24097222,"width":0.078125,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"bounds":{"left":0.7484375,"top":0.21597221,"width":0.033203125,"height":0.022222223},"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.7535156,"top":0.22152779,"width":0.013671875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"bounds":{"left":0.3191406,"top":0.24930556,"width":0.0140625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"steliyan-g","depth":15,"bounds":{"left":0.34101564,"top":0.24652778,"width":0.0265625,"height":0.014583333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"steliyan-g","depth":16,"bounds":{"left":0.34101564,"top":0.24791667,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 1 commit into","depth":15,"bounds":{"left":0.36914062,"top":0.24791667,"width":0.07421875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.44492188,"top":0.24652778,"width":0.021875,"height":0.015277778},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.44726562,"top":0.24861111,"width":0.0171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.46835938,"top":0.24791667,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-18909-debug-company-logo","depth":16,"bounds":{"left":0.48164064,"top":0.24652778,"width":0.08085938,"height":0.015277778},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-debug-company-logo","depth":17,"bounds":{"left":0.48398438,"top":0.24861111,"width":0.076171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.5640625,"top":0.24444444,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 17 additions & 0 deletions","depth":14,"bounds":{"left":0.7542969,"top":0.29305556,"width":0.0234375,"height":0.099305555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (3)","depth":16,"bounds":{"left":0.30664062,"top":0.2777778,"width":0.06757812,"height":0.027083334},"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.32265624,"top":0.28541666,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.36757812,"top":0.28541666,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"bounds":{"left":0.37109375,"top":0.28541666,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.37421876,"top":0.28541666,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (1)","depth":16,"bounds":{"left":0.37421876,"top":0.2777778,"width":0.055859376,"height":0.027083334},"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.39023438,"top":0.28541666,"width":0.022265624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.4234375,"top":0.28541666,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.42695314,"top":0.28541666,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.42929688,"top":0.28541666,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (4)","depth":16,"bounds":{"left":0.43007812,"top":0.2777778,"width":0.053125,"height":0.027083334},"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.44609374,"top":0.28541666,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.4765625,"top":0.28541666,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"bounds":{"left":0.48007813,"top":0.28541666,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.48359376,"top":0.28541666,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (1)","depth":16,"bounds":{"left":0.4832031,"top":0.2777778,"width":0.06875,"height":0.027083334},"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.49921876,"top":0.28541666,"width":0.03515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.5453125,"top":0.28541666,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.5488281,"top":0.28541666,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.5511719,"top":0.28541666,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Conversation","depth":12,"bounds":{"left":0.31289062,"top":0.31666666,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation","depth":13,"bounds":{"left":0.31289062,"top":0.31875,"width":0.056640625,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@steliyan-g","depth":12,"bounds":{"left":0.31289062,"top":0.31666666,"width":0.015625,"height":0.027777778},"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.634375,"top":0.31736112,"width":0.009375,"height":0.025694445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"steliyan-g commented 16 minutes ago","depth":14,"bounds":{"left":0.34140626,"top":0.31736112,"width":0.28359374,"height":0.025694445},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"steliyan-g","depth":16,"bounds":{"left":0.34140626,"top":0.32430556,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"steliyan-g","depth":17,"bounds":{"left":0.34140626,"top":0.32430556,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":15,"bounds":{"left":0.36953124,"top":0.32430556,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"16 minutes ago","depth":15,"bounds":{"left":0.40117186,"top":0.32291666,"width":0.03828125,"height":0.014583333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 minutes ago","depth":17,"bounds":{"left":0.40117186,"top":0.32430556,"width":0.03828125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No description provided.","depth":18,"bounds":{"left":0.34140626,"top":0.35625,"width":0.062109374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add or remove reactions","depth":16,"bounds":{"left":0.34140626,"top":0.38055557,"width":0.01015625,"height":0.018055556},"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"@steliyan-g","depth":12,"bounds":{"left":0.35078126,"top":0.43611112,"width":0.0078125,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"JY-18909: Print company logo debugging information","depth":14,"bounds":{"left":0.3609375,"top":0.43888888,"width":0.14101562,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909: Print company logo debugging information","depth":15,"bounds":{"left":0.3609375,"top":0.43888888,"width":0.14101562,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"3 / 4 checks OK","depth":14,"bounds":{"left":0.6226562,"top":0.43611112,"width":0.00625,"height":0.014583333},"help_text":"","role_description":"summary","subrole":"AXSummary","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"2ad20d6","depth":14,"bounds":{"left":0.6304687,"top":0.43888888,"width":0.019921875,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2ad20d6","depth":15,"bounds":{"left":0.6304687,"top":0.43888888,"width":0.019921875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"@steliyan-g","depth":13,"bounds":{"left":0.31289062,"top":0.47708333,"width":0.015625,"height":0.027777778},"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.634375,"top":0.47777778,"width":0.009375,"height":0.025694445},"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.61328125,"top":0.4861111,"width":0.015234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"steliyan-g commented 16 minutes ago","depth":13,"bounds":{"left":0.34140626,"top":0.47777778,"width":0.26132813,"height":0.025694445},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"steliyan-g","depth":15,"bounds":{"left":0.34140626,"top":0.48472223,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"steliyan-g","depth":16,"bounds":{"left":0.34140626,"top":0.48472223,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"commented","depth":14,"bounds":{"left":0.36953124,"top":0.48472223,"width":0.030078124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"16 minutes ago","depth":14,"bounds":{"left":0.40117186,"top":0.48333332,"width":0.03828125,"height":0.014583333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16 minutes ago","depth":16,"bounds":{"left":0.40117186,"top":0.48472223,"width":0.03828125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
1251956278827817469
|
8831686253640361112
|
visual_change
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,552) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
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
prophet
prophet
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues
Pull requests
Repositories
You have no unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Issues
Issues
Pull requests (6)
Pull requests
(
6
)
Agents
Agents
Actions
Actions
Projects
Projects
Wiki
Wiki
Security and quality (20)
Security and quality
(
20
)
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
steliyan-g
steliyan-g
requested your review on this pull request.
Add your review
Add your review
JY-18909: Print company logo debugging information #472 Edit title
JY-18909: Print company logo debugging information
#
472
Edit title
View statusView status
Loading
Loading merge status
Code
Code
Open
steliyan-g
steliyan-g
wants to merge 1 commit into
master
master
from
JY-18909-debug-company-logo
JY-18909-debug-company-logo
Copy head branch name to clipboard
Lines changed: 17 additions & 0 deletions
Conversation (3)
Conversation
(
3
)
Commits (1)
Commits
(
1
)
Checks (4)
Checks
(
4
)
Files changed (1)
Files changed
(
1
)
Conversation
Conversation
@steliyan-g
Show options
steliyan-g commented 16 minutes ago
steliyan-g
steliyan-g
commented
16 minutes ago
16 minutes ago
No description provided.
Add or remove reactions
@steliyan-g
JY-18909: Print company logo debugging information
JY-18909: Print company logo debugging information
3 / 4 checks OK
2ad20d6
2ad20d6
@steliyan-g
Show options
Author
steliyan-g commented 16 minutes ago
steliyan-g
steliyan-g
commented
16 minutes ago
16 minutes ago...
|
NULL
|
|
31921
|
649
|
40
|
2026-04-16T06:43:42.712042+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321822712_m2.jpg...
|
Firefox
|
app/app/Services/Crm/ProspectCache.php at e93e7b74 app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/11879/changes#diff-090 github.com/jiminny/app/pull/11879/changes#diff-0904129c6162834a7de4e1d17687db3902c2bc174e8247b8382758eef337b87c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));
return null;
}
}
Expand
Listen
Show more options
Show thinking
Gemini said
Gemini said
This PHP class,
StaleRecordValidator
, is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.
Here is a clear breakdown of how the class works and its core responsibilities.
High-Level Purpose
High-Level Purpose
When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (
120 days
), the system assumes it might be "stale" or deleted. It then reaches out to the remote CRM to check its status.
Step-by-Step Logic
Step-by-Step Logic
The flow of the validation process is broken down into three main methods:
1. filterStale() (The Entry Point)
1.
filterStale()
(The Entry Point)
This is the public method that receives a CRM object and a CRM service.
Sanity Checks:
It first ensures that the object and the CRM service actually exist.
The Age Check:
It uses the
Carbon
library to calculate a date 120 days in the past (
STALE_THRESHOLD_DAYS
).
Fast Return:
If the local record's
updated_at
timestamp is
newer
than 120 days ago, it is considered "fresh" and returned immediately without making any API calls.
Delegation:
If the record is older than 120 days, it passes the object to
syncPotentiallyStaleObject()
for further validation.
2. syncPotentiallyStaleObject() (The Validation)...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sprint Review - Apr 15 - Chat","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.22460938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"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.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.2171875,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.23125,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.228125,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.0984375,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"bounds":{"left":0.1953125,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.2109375,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.09335937,"top":0.12847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.09335937,"top":0.13055556,"width":0.14101562,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.024609376,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"bounds":{"left":0.14375,"top":0.0,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.023611112,"width":0.06679688,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":0.0625,"width":0.060546875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":0.10138889,"width":0.056640625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"bounds":{"left":0.14375,"top":0.15972222,"width":0.07382812,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"bounds":{"left":0.14375,"top":0.2375,"width":0.025390625,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"bounds":{"left":0.14375,"top":0.27638888,"width":0.06796875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.31527779,"width":0.07265625,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.4125,"width":0.07109375,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.50972223,"width":0.07382812,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"bounds":{"left":0.14375,"top":0.60694444,"width":0.071875,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"bounds":{"left":0.14375,"top":0.70416665,"width":0.023046875,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"bounds":{"left":0.14375,"top":0.7430556,"width":0.0703125,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"bounds":{"left":0.14375,"top":0.78194445,"width":0.07109375,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.14375,"top":0.8402778,"width":0.021484375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"bounds":{"left":0.14375,"top":0.87916666,"width":0.065625,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"bounds":{"left":0.14375,"top":0.91805553,"width":0.0734375,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"bounds":{"left":0.14375,"top":0.99583334,"width":0.06679688,"height":0.0041666627},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.060546875,"height":-0.03472221},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"bounds":{"left":0.14375,"top":1.0,"width":0.056640625,"height":-0.07361114},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (Exception $e) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->error('[StaleRecordValidator] Failed to sync record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'error' => $e->getMessage(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmObject->getCrmProviderId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":20,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This PHP class,","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"StaleRecordValidator","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a clear breakdown of how the class works and its core responsibilities.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"High-Level Purpose","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"High-Level Purpose","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"120 days","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), the system assumes it might be \"stale\" or deleted. It then reaches out to the remote CRM to check its status.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Step-by-Step Logic","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Step-by-Step Logic","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The flow of the validation process is broken down into three main methods:","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. filterStale() (The Entry Point)","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"filterStale()","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(The Entry Point)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the public method that receives a CRM object and a CRM service.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sanity Checks:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It first ensures that the object and the CRM service actually exist.","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Age Check:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It uses the","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Carbon","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"library to calculate a date 120 days in the past (","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"STALE_THRESHOLD_DAYS","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fast Return:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If the local record's","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"updated_at","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"timestamp is","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"newer","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"than 120 days ago, it is considered \"fresh\" and returned immediately without making any API calls.","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Delegation:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If the record is older than 120 days, it passes the object to","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"syncPotentiallyStaleObject()","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"for further validation.","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. syncPotentiallyStaleObject() (The Validation)","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"}]...
|
4580602878393446498
|
8831632139654595164
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Sprint Review - Apr 15 - Chat
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
app/app/Services/Crm/ProspectCache.php at e93e7b7433974694bbc9876b07a0cd5d9cc25c07 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));
return null;
}
}
Expand
Listen
Show more options
Show thinking
Gemini said
Gemini said
This PHP class,
StaleRecordValidator
, is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.
Here is a clear breakdown of how the class works and its core responsibilities.
High-Level Purpose
High-Level Purpose
When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (
120 days
), the system assumes it might be "stale" or deleted. It then reaches out to the remote CRM to check its status.
Step-by-Step Logic
Step-by-Step Logic
The flow of the validation process is broken down into three main methods:
1. filterStale() (The Entry Point)
1.
filterStale()
(The Entry Point)
This is the public method that receives a CRM object and a CRM service.
Sanity Checks:
It first ensures that the object and the CRM service actually exist.
The Age Check:
It uses the
Carbon
library to calculate a date 120 days in the past (
STALE_THRESHOLD_DAYS
).
Fast Return:
If the local record's
updated_at
timestamp is
newer
than 120 days ago, it is considered "fresh" and returned immediately without making any API calls.
Delegation:
If the record is older than 120 days, it passes the object to
syncPotentiallyStaleObject()
for further validation.
2. syncPotentiallyStaleObject() (The Validation)...
|
NULL
|
|
31881
|
649
|
19
|
2026-04-16T06:40:54.722490+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321654722_m2.jpg...
|
Firefox
|
Jy 20541 cleanup stale purged crm objects by Vasil Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app — Work...
|
1
|
github.com/jiminny/app/pull/11879/changes#diff-090 github.com/jiminny/app/pull/11879/changes#diff-0904129c6162834a7de4e1d17687db3902c2bc174e8247b8382758eef337b87c...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app
Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));
return null;
}
}
Expand
Listen
Show more options
Show thinking
Gemini said
Gemini said
This PHP class,
StaleRecordValidator
, is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.
Here is a clear breakdown of how the class works and its core responsibilities.
High-Level Purpose
High-Level Purpose
When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (
120 days
), the system assumes it might be "stale" or deleted. It then reaches out to the remote CRM to check its status.
Step-by-Step Logic
Step-by-Step Logic
The flow of the validation process is broken down into three main methods:
1. filterStale() (The Entry Point)
1.
filterStale()
(The Entry Point)
This is the public method that receives a CRM object and a CRM service.
Sanity Checks:
It first ensures that the object and the CRM service actually exist.
The Age Check:
It uses the...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,558) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"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.015625,"top":0.29166666,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.19492188,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"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.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"bounds":{"left":0.2171875,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"bounds":{"left":0.23125,"top":0.047916666,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"WORK, Google Account: lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.228125,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"bounds":{"left":0.0984375,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Chat","depth":12,"bounds":{"left":0.1953125,"top":0.090277776,"width":0.015625,"height":0.027777778},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"bounds":{"left":0.2109375,"top":0.090277776,"width":0.015625,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"bounds":{"left":0.09335937,"top":0.12847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"bounds":{"left":0.09335937,"top":0.13055556,"width":0.14101562,"height":0.022222223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said Exaplain <?php declare(strict_types=1); namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators; use Exception; use Carbon\\CarbonImmutable; use Illuminate\\Contracts\\Events\\Dispatcher; use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface; use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface; use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted; use Jiminny\\Exceptions\\HttpNotFoundException; use Jiminny\\Models\\Account; use Jiminny\\Models\\Contact; use Jiminny\\Models\\Lead; use Jiminny\\Models\\Opportunity; use Psr\\Log\\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Exaplain <?php","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"declare(strict_types=1);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"namespace Jiminny\\Services\\Crm\\CrmObjects\\Validators;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Exception;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Carbon\\CarbonImmutable;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Illuminate\\Contracts\\Events\\Dispatcher;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Crm\\SyncableCrmObjectInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Contracts\\Services\\Crm\\SyncCrmEntitiesInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Events\\Crm\\RemoteCrmRecordDeleted;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Exceptions\\HttpNotFoundException;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Account;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Contact;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Lead;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Jiminny\\Models\\Opportunity;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use Psr\\Log\\LoggerInterface;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* Validate if a CRM record is stale.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a record hasn't been updated recently, we should test against the real CRM","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* to validate if this record still exists, or was deleted / purged.","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"class StaleRecordValidator","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/**","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*/","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private const int STALE_THRESHOLD_DAYS = 120;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function __construct(","depth":23,"bounds":{"left":0.1609375,"top":0.0,"width":0.048828125,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly LoggerInterface $logger,","depth":23,"bounds":{"left":0.1609375,"top":0.0,"width":0.045703124,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private readonly Dispatcher $dispatcher","depth":23,"bounds":{"left":0.1609375,"top":0.02638889,"width":0.033984374,"height":0.072916664},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") {","depth":23,"bounds":{"left":0.1609375,"top":0.104166664,"width":0.0125,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.1609375,"top":0.12361111,"width":0.00859375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"public function filterStale(","depth":23,"bounds":{"left":0.1609375,"top":0.1625,"width":0.048828125,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncableCrmObjectInterface $crmObjectCandidate,","depth":23,"bounds":{"left":0.1609375,"top":0.2013889,"width":0.0546875,"height":0.09236111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"?SyncCrmEntitiesInterface $crmService","depth":23,"bounds":{"left":0.1609375,"top":0.2986111,"width":0.055859376,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"bounds":{"left":0.1609375,"top":0.35694444,"width":0.0546875,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmObjectCandidate) {","depth":23,"bounds":{"left":0.1609375,"top":0.41527778,"width":0.05390625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"bounds":{"left":0.1609375,"top":0.47361112,"width":0.049609374,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.1609375,"top":0.49305555,"width":0.015234375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (! $crmService) {","depth":23,"bounds":{"left":0.1609375,"top":0.53194445,"width":0.0421875,"height":0.034027778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"bounds":{"left":0.1609375,"top":0.5708333,"width":0.05390625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.1609375,"top":0.62916666,"width":0.015234375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);","depth":23,"bounds":{"left":0.1609375,"top":0.66805553,"width":0.05625,"height":0.13125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {","depth":23,"bounds":{"left":0.1609375,"top":0.8041667,"width":0.05546875,"height":0.11180556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObjectCandidate;","depth":23,"bounds":{"left":0.1609375,"top":0.92083335,"width":0.05390625,"height":0.05347222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"bounds":{"left":0.1609375,"top":0.9791667,"width":0.015234375,"height":0.014583333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);","depth":23,"bounds":{"left":0.1609375,"top":1.0,"width":0.056640625,"height":-0.018055558},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function syncPotentiallyStaleObject(","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncableCrmObjectInterface $crmObject,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SyncCrmEntitiesInterface $crmService","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"): ?SyncableCrmObjectInterface {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmProviderId = $crmObject->getCrmProviderId();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if (empty($crmProviderId)) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"try {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'updated_at' => $crmObject->getAttribute('updated_at'),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject = match (true) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"};","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if ($syncedObject === null) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$syncedObject->touch();","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record synced successfully', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $syncedObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (HttpNotFoundException) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $this->purgeStaleRecord($crmObject);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"} catch (Exception $e) {","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->error('[StaleRecordValidator] Failed to sync record', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmProviderId,","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'error' => $e->getMessage(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return $crmObject;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"{","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'model' => get_class($crmObject),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'id' => $crmObject->getId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'crm_provider_id' => $crmObject->getCrmProviderId(),","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"]);","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"return null;","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"}","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Expand","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Listen","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":20,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This PHP class,","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"StaleRecordValidator","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here is a clear breakdown of how the class works and its core responsibilities.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"High-Level Purpose","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"High-Level Purpose","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"120 days","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"), the system assumes it might be \"stale\" or deleted. It then reaches out to the remote CRM to check its status.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Step-by-Step Logic","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Step-by-Step Logic","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The flow of the validation process is broken down into three main methods:","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. filterStale() (The Entry Point)","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"filterStale()","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(The Entry Point)","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the public method that receives a CRM object and a CRM service.","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sanity Checks:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It first ensures that the object and the CRM service actually exist.","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Age Check:","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"It uses the","depth":26,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-620454775288656036
|
8831632070666814204
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,558) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app
Jy 20541 cleanup stale purged crm objects by Vasil-Jiminny · Pull Request #11879 · jiminny/app
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AI Chat settings
Close
WORK, Google Account: [EMAIL]
Main menu
New Chat
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
Edit
You said Exaplain <?php declare(strict_types=1); namespace Jiminny\Services\Crm\CrmObjects\Validators; use Exception; use Carbon\CarbonImmutable; use Illuminate\Contracts\Events\Dispatcher; use Jiminny\Contracts\Crm\SyncableCrmObjectInterface; use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface; use Jiminny\Events\Crm\RemoteCrmRecordDeleted; use Jiminny\Exceptions\HttpNotFoundException; use Jiminny\Models\Account; use Jiminny\Models\Contact; use Jiminny\Models\Lead; use Jiminny\Models\Opportunity; use Psr\Log\LoggerInterface; /** * Validate if a CRM record is stale. * * If a record hasn't been updated recently, we should test against the real CRM * to validate if this record still exists, or was deleted / purged. */ class StaleRecordValidator { /** * If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale */ private const int STALE_THRESHOLD_DAYS = 120; public function __construct( private readonly LoggerInterface $logger, private readonly Dispatcher $dispatcher ) { } public function filterStale( ?SyncableCrmObjectInterface $crmObjectCandidate, ?SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { if (! $crmObjectCandidate) { return null; } if (! $crmService) { return $crmObjectCandidate; } $thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS); if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) { return $crmObjectCandidate; } return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService); } private function syncPotentiallyStaleObject( SyncableCrmObjectInterface $crmObject, SyncCrmEntitiesInterface $crmService ): ?SyncableCrmObjectInterface { $crmProviderId = $crmObject->getCrmProviderId(); if (empty($crmProviderId)) { $this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), ]); return $crmObject; } try { $this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'updated_at' => $crmObject->getAttribute('updated_at'), ]); $syncedObject = match (true) { $crmObject instanceof Lead => $crmService->syncLead($crmProviderId), $crmObject instanceof Account => $crmService->syncAccount($crmProviderId), $crmObject instanceof Contact => $crmService->syncContact($crmProviderId), $crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId), }; if ($syncedObject === null) { return $this->purgeStaleRecord($crmObject); } $syncedObject->touch(); $this->logger->info('[StaleRecordValidator] Record synced successfully', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, ]); return $syncedObject; } catch (HttpNotFoundException) { return $this->purgeStaleRecord($crmObject); } catch (Exception $e) { $this->logger->error('[StaleRecordValidator] Failed to sync record', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmProviderId, 'error' => $e->getMessage(), ]); return $crmObject; } } private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null { $this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [ 'model' => get_class($crmObject), 'id' => $crmObject->getId(), 'crm_provider_id' => $crmObject->getCrmProviderId(), ]); $this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject)); return null; } }
You said
Exaplain <?php
declare(strict_types=1);
namespace Jiminny\Services\Crm\CrmObjects\Validators;
use Exception;
use Carbon\CarbonImmutable;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\Crm\SyncableCrmObjectInterface;
use Jiminny\Contracts\Services\Crm\SyncCrmEntitiesInterface;
use Jiminny\Events\Crm\RemoteCrmRecordDeleted;
use Jiminny\Exceptions\HttpNotFoundException;
use Jiminny\Models\Account;
use Jiminny\Models\Contact;
use Jiminny\Models\Lead;
use Jiminny\Models\Opportunity;
use Psr\Log\LoggerInterface;
/**
* Validate if a CRM record is stale.
*
* If a record hasn't been updated recently, we should test against the real CRM
* to validate if this record still exists, or was deleted / purged.
*/
class StaleRecordValidator
{
/**
* If a CRM entity hasn't been updated in more than 120 days, the object may be potentially stale
*/
private const int STALE_THRESHOLD_DAYS = 120;
public function __construct(
private readonly LoggerInterface $logger,
private readonly Dispatcher $dispatcher
) {
}
public function filterStale(
?SyncableCrmObjectInterface $crmObjectCandidate,
?SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
if (! $crmObjectCandidate) {
return null;
}
if (! $crmService) {
return $crmObjectCandidate;
}
$thresholdDate = CarbonImmutable::now()->subDays(self::STALE_THRESHOLD_DAYS);
if ($thresholdDate->isBefore($crmObjectCandidate->getAttribute('updated_at'))) {
return $crmObjectCandidate;
}
return $this->syncPotentiallyStaleObject($crmObjectCandidate, $crmService);
}
private function syncPotentiallyStaleObject(
SyncableCrmObjectInterface $crmObject,
SyncCrmEntitiesInterface $crmService
): ?SyncableCrmObjectInterface {
$crmProviderId = $crmObject->getCrmProviderId();
if (empty($crmProviderId)) {
$this->logger->warning('[StaleRecordValidator] CRM object has empty crm_provider_id', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
]);
return $crmObject;
}
try {
$this->logger->info('[StaleRecordValidator] Syncing potentially stale record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'updated_at' => $crmObject->getAttribute('updated_at'),
]);
$syncedObject = match (true) {
$crmObject instanceof Lead => $crmService->syncLead($crmProviderId),
$crmObject instanceof Account => $crmService->syncAccount($crmProviderId),
$crmObject instanceof Contact => $crmService->syncContact($crmProviderId),
$crmObject instanceof Opportunity => $crmService->syncOpportunity($crmProviderId),
};
if ($syncedObject === null) {
return $this->purgeStaleRecord($crmObject);
}
$syncedObject->touch();
$this->logger->info('[StaleRecordValidator] Record synced successfully', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
]);
return $syncedObject;
} catch (HttpNotFoundException) {
return $this->purgeStaleRecord($crmObject);
} catch (Exception $e) {
$this->logger->error('[StaleRecordValidator] Failed to sync record', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmProviderId,
'error' => $e->getMessage(),
]);
return $crmObject;
}
}
private function purgeStaleRecord(SyncableCrmObjectInterface $crmObject): null
{
$this->logger->info('[StaleRecordValidator] Record not found in remote CRM', [
'model' => get_class($crmObject),
'id' => $crmObject->getId(),
'crm_provider_id' => $crmObject->getCrmProviderId(),
]);
$this->dispatcher->dispatch(new RemoteCrmRecordDeleted($crmObject));
return null;
}
}
Expand
Listen
Show more options
Show thinking
Gemini said
Gemini said
This PHP class,
StaleRecordValidator
, is designed to keep a local database synchronized with a remote CRM (Customer Relationship Management) system. Its primary job is to check if local CRM records (like Leads, Accounts, Contacts, or Opportunities) are too old, and if so, verify if they still exist in the remote CRM.
Here is a clear breakdown of how the class works and its core responsibilities.
High-Level Purpose
High-Level Purpose
When syncing data between a local system and a remote CRM, records can sometimes be deleted in the remote system without the local system knowing. This class acts as a cleanup mechanism. If a local record hasn't been updated in a long time (
120 days
), the system assumes it might be "stale" or deleted. It then reaches out to the remote CRM to check its status.
Step-by-Step Logic
Step-by-Step Logic
The flow of the validation process is broken down into three main methods:
1. filterStale() (The Entry Point)
1.
filterStale()
(The Entry Point)
This is the public method that receives a CRM object and a CRM service.
Sanity Checks:
It first ensures that the object and the CRM service actually exist.
The Age Check:
It uses the...
|
31878
|
|
72611
|
1771
|
46
|
2026-04-22T15:58:15.300880+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776873495300_m2.jpg...
|
Firefox
|
how would I use screenpipe effectively - Google Se how would I use screenpipe effectively - Google Search — Personal...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
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
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Skip to main content
Skip to main content
Accessibility help
Accessibility help
Accessibility feedback
Accessibility feedback
Go to Google Home
how would I use screenpipe effectively
how would I use screenpipe effectively
Clear
Search by voice
Search by image
Search
Google apps
Google Account: Lukáš Koválik ([EMAIL])
AI Mode
AI Mode
All
All
Images
Images
Videos
Videos
Forums
Forums
Short videos
Short videos
News
News
More filters
More
Tools
Tools
Search Results
Search Results
Videos
Videos
About this result
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ...
YouTube
Note Companion
Jan 11, 2025
About this result
How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ...
YouTube
screenpipe
Jan 22, 2026
About this result
screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38
View all videos
View all
AI Overview
AI Overview
View 2 corroboration links
About this result
Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a "second brain" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux
. It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.
GitHub (+4) - View related links
Here is how to use Screenpipe effectively:
Show more AI Overview
Show more
Discussions and forums
Discussions and forums
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Reddit
·
r/ObsidianMD
·
3 comments
·
1 year ago
·
About this result
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
Reddit
·
r/macapps
·
4 comments
·
1 year ago
·
About this result
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
See more discussions
See more
Web results
Web results
Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe
Screenpipe — Screen AI That Records Everything ...
Screenpipe — Screen AI That Records Everything ...
Screenpipe
https://screenpi.pe
About this result
6 hours ago
—
Screen AI that records your screen & audio 24/7
and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Skywork
https://skywork.ai
› screenpipe-mcp-ai-vision-memory
About this result
Oct 20, 2025
—
Transform your AI experience with
Screenpipe MCP Server
, the ultimate tool for empowering context-aware AI on your desktop.
Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago
Can Screenpipe be your new PKMS? | by Theo James
Can Screenpipe be your new PKMS? | by Theo James
Medium · Theo James
1 year ago
About this result
Screenpipe is an AI-powered application designed for personal knowledge management
. It helps users organize, store, and retrieve information ...
screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe
screenpipe/screenpipe: Run agents that work for you ...
screenpipe/screenpipe: Run agents that work for you ...
GitHub
https://github.com
› screenpipe › screenpipe
About this result
remember everything - never forget what you saw, heard, or did;
run agents that work based on what you do
- pipes are agents triggered by your work activity.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...
Screenpipe vs Limitless
Screenpipe vs Limitless
Mintlify
https://mintlify.com
› screenpipe › comparison › vs-limit...
About this result
screenpipe: Multi-monitor:
Captures all connected monitors
; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...
Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago
Introducing screenpipe: AI-powered context engine for devs
Introducing screenpipe: AI-powered context engine for devs
LinkedIn · Matthew Diakonov
10+ reactions · 1 year ago
About this result
screen pipe is a context layer that allows you to put your desktop history
. In AI, developers can build apps for basic context and then publish to Screen Pipe ...
Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources
Resources - Screenpipe Use Cases & Guides
Resources - Screenpipe Use Cases & Guides
Screenpipe
https://screenpi.pe
› resources
About this result
Explore how
Screenpipe helps you capture, search, and recall everything on your screen
. Discover use cases for personal knowledge management, meeting notes, ...
Missing:
effectively
| Show results with:
effectively
effectively
I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago
I built an open-source app that records your screen 24/7 and ...
I built an open-source app that records your screen 24/7 and ...
Reddit · r/windowsapps
10+ comments · 2 months ago
About this result
I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22
it's called screenpipe - it runs in the background,
captures your screen
via Windows OCR and Windows Accessibility API and your audio via ...
People also search for
People also search for
How would i use screenpipe effectively on android
How would i use screenpipe effectively
on android
How to use screenpipe
How
to
use screenpipe
Screenpipe Reddit
Screenpipe
Reddit
Screenpipe documentation
Screenpipe
documentation
Screenpipe github
Screenpipe
github
Screenpipe Review
Screenpipe
Review
Screenpipe AI
Screenpipe
AI
Is screenpipe free
Is
screenpipe
free
Page navigation
Page navigation
1
Page 2
2
Page 3
3
Page 4
4
Page 5...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.4010971,"top":0.0518755,"width":0.05501995,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (69) - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.45611703,"top":0.0518755,"width":0.05501995,"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.39926863,"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.41256648,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.39926863,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.41256648,"top":0.13886672,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.39926863,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.41256648,"top":0.17158818,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"100.73.206.126:8768/","depth":4,"bounds":{"left":0.39926863,"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":"100.73.206.126:8768/","depth":5,"bounds":{"left":0.41256648,"top":0.20430966,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.39926863,"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":"Today's Deals","depth":5,"bounds":{"left":0.41256648,"top":0.23703113,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"bounds":{"left":0.39926863,"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":"Shameless • HBO Max","depth":5,"bounds":{"left":0.41256648,"top":0.2697526,"width":0.03873005,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"install screenpipe - screenpipe docs","depth":4,"bounds":{"left":0.39926863,"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":"install screenpipe - screenpipe docs","depth":5,"bounds":{"left":0.41256648,"top":0.30247405,"width":0.0631649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.39926863,"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":"New Tab","depth":5,"bounds":{"left":0.41256648,"top":0.33519554,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.39926863,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.41256648,"top":0.367917,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.39926863,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.41256648,"top":0.40063846,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.39926863,"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":"Claude Platform","depth":5,"bounds":{"left":0.41256648,"top":0.43335995,"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.39926863,"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":"rescue time detailed overview - Google Search","depth":5,"bounds":{"left":0.41256648,"top":0.4660814,"width":0.08128324,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"how would I use screenpipe effectively - Google Search","depth":4,"bounds":{"left":0.39926863,"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":"how would I use screenpipe effectively - Google Search","depth":5,"bounds":{"left":0.41256648,"top":0.49880287,"width":0.0965758,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.5006649,"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.40209442,"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.40209442,"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.41306517,"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.4242021,"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.4353391,"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.44647607,"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 main content","depth":7,"bounds":{"left":0.51662236,"top":0.0981644,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":8,"bounds":{"left":0.5221077,"top":0.101356745,"width":0.025598405,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility help","depth":7,"bounds":{"left":0.51662236,"top":0.0981644,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility help","depth":8,"bounds":{"left":0.52227396,"top":0.101356745,"width":0.025265958,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility feedback","depth":7,"bounds":{"left":0.51662236,"top":0.12051077,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility feedback","depth":8,"bounds":{"left":0.52227396,"top":0.123703115,"width":0.025265958,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to Google Home","depth":10,"bounds":{"left":0.52177525,"top":0.08060654,"width":0.030585106,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"how would I use screenpipe effectively","depth":9,"bounds":{"left":0.5739694,"top":0.07342378,"width":0.21875,"height":0.03990423},"value":"how would I use screenpipe effectively","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"how would I use screenpipe effectively","depth":10,"bounds":{"left":0.5739694,"top":0.08539505,"width":0.093417555,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":9,"bounds":{"left":0.7927194,"top":0.07342378,"width":0.015957447,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search by voice","depth":9,"bounds":{"left":0.8103391,"top":0.083798885,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search by image","depth":9,"bounds":{"left":0.82363695,"top":0.083798885,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":9,"bounds":{"left":0.83826464,"top":0.07342378,"width":0.01462766,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google apps","depth":9,"bounds":{"left":0.9640958,"top":0.07741421,"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":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":8,"bounds":{"left":0.9800532,"top":0.07741421,"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":"AXLink","text":"AI Mode","depth":17,"bounds":{"left":0.5696476,"top":0.12210695,"width":0.025930852,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Mode","depth":19,"bounds":{"left":0.57363695,"top":0.13647246,"width":0.017952127,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All","depth":17,"bounds":{"left":0.59557843,"top":0.12210695,"width":0.013464096,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":20,"bounds":{"left":0.59956783,"top":0.13647246,"width":0.005485372,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Images","depth":17,"bounds":{"left":0.6090425,"top":0.12210695,"width":0.023769947,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Images","depth":19,"bounds":{"left":0.6130319,"top":0.13647246,"width":0.015791224,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Videos","depth":17,"bounds":{"left":0.6328125,"top":0.12210695,"width":0.022772606,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Videos","depth":19,"bounds":{"left":0.63680184,"top":0.13647246,"width":0.014793883,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forums","depth":17,"bounds":{"left":0.6555851,"top":0.12210695,"width":0.024268618,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forums","depth":19,"bounds":{"left":0.65957445,"top":0.13647246,"width":0.016289894,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Short videos","depth":17,"bounds":{"left":0.67985374,"top":0.12210695,"width":0.03557181,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Short videos","depth":19,"bounds":{"left":0.6838431,"top":0.13647246,"width":0.027593086,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"News","depth":17,"bounds":{"left":0.71542555,"top":0.12210695,"width":0.019946808,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"News","depth":19,"bounds":{"left":0.7194149,"top":0.13647246,"width":0.011968086,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More filters","depth":17,"bounds":{"left":0.73537236,"top":0.12210695,"width":0.025099734,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":20,"bounds":{"left":0.7393617,"top":0.13647246,"width":0.011136968,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Tools","depth":16,"bounds":{"left":0.76047206,"top":0.12210695,"width":0.02543218,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Tools","depth":18,"bounds":{"left":0.76446146,"top":0.13647246,"width":0.011469414,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Search Results","depth":8,"bounds":{"left":0.51296544,"top":0.16041501,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search Results","depth":9,"bounds":{"left":0.51296544,"top":0.16041501,"width":0.03158245,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Videos","depth":15,"bounds":{"left":0.57363695,"top":0.18834797,"width":0.02244016,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Videos","depth":16,"bounds":{"left":0.57363695,"top":0.18834797,"width":0.02244016,"height":0.022346368},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":17,"bounds":{"left":0.59607714,"top":0.19074222,"width":0.017287234,"height":0.015961692},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago","depth":18,"bounds":{"left":0.62948805,"top":0.22505985,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago","depth":19,"bounds":{"left":0.62948805,"top":0.22505985,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automate your entire company using screenpipe","depth":22,"bounds":{"left":0.62948805,"top":0.22665602,"width":0.116855055,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.2585794,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.2585794,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 weeks ago","depth":21,"bounds":{"left":0.62948805,"top":0.27613726,"width":0.026097074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.25618514,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28","depth":18,"bounds":{"left":0.57363695,"top":0.22505985,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago","depth":18,"bounds":{"left":0.62948805,"top":0.31125298,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago","depth":19,"bounds":{"left":0.62948805,"top":0.31125298,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automate Your To Do List with Screenpipe","depth":22,"bounds":{"left":0.62948805,"top":0.31284916,"width":0.100398935,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.34477255,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.34477255,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 weeks ago","depth":21,"bounds":{"left":0.62948805,"top":0.3623304,"width":0.026097074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.3423783,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28","depth":18,"bounds":{"left":0.57363695,"top":0.31125298,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025","depth":18,"bounds":{"left":0.62948805,"top":0.39744613,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025","depth":19,"bounds":{"left":0.62948805,"top":0.39744613,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How I use Screenpipe + Auto-pay to automatically create ...","depth":22,"bounds":{"left":0.62948805,"top":0.3990423,"width":0.14245346,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.4309657,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Note Companion","depth":21,"bounds":{"left":0.6505984,"top":0.4309657,"width":0.036236703,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jan 11, 2025","depth":21,"bounds":{"left":0.62948805,"top":0.44852355,"width":0.026595745,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.68484044,"top":0.42857143,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56","depth":18,"bounds":{"left":0.57363695,"top":0.39744613,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026","depth":18,"bounds":{"left":0.62948805,"top":0.48363927,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026","depth":19,"bounds":{"left":0.62948805,"top":0.48363927,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe 2.0: open source AI that remembers everything ...","depth":22,"bounds":{"left":0.62948805,"top":0.48523542,"width":0.14744017,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.5171588,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.5171588,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jan 22, 2026","depth":21,"bounds":{"left":0.62948805,"top":0.53471667,"width":0.026928192,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.51476455,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38","depth":18,"bounds":{"left":0.57363695,"top":0.48363927,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"View all videos","depth":16,"bounds":{"left":0.62017953,"top":0.56264967,"width":0.12367021,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View all","depth":18,"bounds":{"left":0.6690492,"top":0.5714286,"width":0.01662234,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Overview","depth":21,"bounds":{"left":0.58361036,"top":0.6256983,"width":0.026263298,"height":0.014764565},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Overview","depth":22,"bounds":{"left":0.58361036,"top":0.6256983,"width":0.026263298,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View 2 corroboration links","depth":21,"bounds":{"left":0.7631317,"top":0.61372703,"width":0.015957447,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"About this result","depth":22,"bounds":{"left":0.7844083,"top":0.6256983,"width":0.005984043,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a \"second brain\" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux","depth":27,"bounds":{"left":0.57363695,"top":0.65682364,"width":0.21210106,"height":0.054668795},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.","depth":27,"bounds":{"left":0.57363695,"top":0.69513166,"width":0.21110372,"height":0.054668795},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"GitHub (+4) - View related links","depth":27,"bounds":{"left":0.6427859,"top":0.73343974,"width":0.025598405,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Here is how to use Screenpipe effectively:","depth":27,"bounds":{"left":0.57363695,"top":0.76536316,"width":0.10106383,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Show more AI Overview","depth":19,"bounds":{"left":0.57363695,"top":0.8858739,"width":0.21675532,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Show more","depth":21,"bounds":{"left":0.6619016,"top":0.89864326,"width":0.024268618,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Discussions and forums","depth":15,"bounds":{"left":0.57363695,"top":0.9776536,"width":0.077792555,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discussions and forums","depth":16,"bounds":{"left":0.57363695,"top":0.9776536,"width":0.077792555,"height":0.022346368},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago","depth":19,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":20,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":21,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":22,"bounds":{"left":0.57363695,"top":1.0,"width":0.1966423,"height":-0.009577036},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":22,"bounds":{"left":0.58294547,"top":1.0,"width":0.013796543,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":22,"bounds":{"left":0.59674203,"top":1.0,"width":0.0038231383,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"r/ObsidianMD","depth":24,"bounds":{"left":0.60056514,"top":1.0,"width":0.024767287,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":25,"bounds":{"left":0.6253325,"top":1.0,"width":0.003656915,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3 comments","depth":25,"bounds":{"left":0.62898934,"top":1.0,"width":0.021941489,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":24,"bounds":{"left":0.6509308,"top":1.0,"width":0.003656915,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":24,"bounds":{"left":0.65458775,"top":1.0,"width":0.019115692,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":21,"bounds":{"left":0.59674203,"top":1.0,"width":0.0038231383,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":20,"bounds":{"left":0.67370343,"top":1.0,"width":0.017287234,"height":-0.03272152},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago","depth":17,"bounds":{"left":0.77443486,"top":1.0,"width":0.015957447,"height":-0.014764547},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"r/macapps","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 comments","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"See more discussions","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"See more","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Web results","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web results","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe — Screen AI That Records Everything ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe — Screen AI That Records Everything ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://screenpi.pe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 hours ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"—","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screen AI that records your screen & audio 24/7","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Skywork","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://skywork.ai","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe-mcp-ai-vision-memory","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Oct 20, 2025","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"—","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transform your AI experience with","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe MCP Server","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", the ultimate tool for empowering context-aware AI on your desktop.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Can Screenpipe be your new PKMS? | by Theo James","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Can Screenpipe be your new PKMS? | by Theo James","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium · Theo James","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe is an AI-powered application designed for personal knowledge management","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". It helps users organize, store, and retrieve information ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe/screenpipe: Run agents that work for you ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe/screenpipe: Run agents that work for you ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GitHub","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://github.com","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe › screenpipe","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"remember everything - never forget what you saw, heard, or did;","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"run agents that work based on what you do","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- pipes are agents triggered by your work activity.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe vs Limitless","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe vs Limitless","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mintlify","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://mintlify.com","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe › comparison › vs-limit...","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screenpipe: Multi-monitor:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Captures all connected monitors","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Introducing screenpipe: AI-powered context engine for devs","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introducing screenpipe: AI-powered context engine for devs","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LinkedIn · Matthew Diakonov","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10+ reactions · 1 year ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screen pipe is a context layer that allows you to put your desktop history","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". In AI, developers can build apps for basic context and then publish to Screen Pipe ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Resources - Screenpipe Use Cases & Guides","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resources - Screenpipe Use Cases & Guides","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://screenpi.pe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› resources","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore how","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe helps you capture, search, and recall everything on your screen","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Discover use cases for personal knowledge management, meeting notes, ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"I built an open-source app that records your screen 24/7 and ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I built an open-source app that records your screen 24/7 and ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit · r/windowsapps","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10+ comments · 2 months ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"it's called screenpipe - it runs in the background,","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"captures your screen","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via Windows OCR and Windows Accessibility API and your audio via ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"People also search for","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"People also search for","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How would i use screenpipe effectively on android","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How would i use screenpipe effectively","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on android","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How to use screenpipe","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe Reddit","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe documentation","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"documentation","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe github","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"github","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe Review","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe AI","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Is screenpipe free","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Is","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"free","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Page navigation","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page navigation","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Page 2","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Page 3","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"3","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Page 4","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"4","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Page 5","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
6686777250728371759
|
8830281412067567992
|
visual_change
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
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
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Skip to main content
Skip to main content
Accessibility help
Accessibility help
Accessibility feedback
Accessibility feedback
Go to Google Home
how would I use screenpipe effectively
how would I use screenpipe effectively
Clear
Search by voice
Search by image
Search
Google apps
Google Account: Lukáš Koválik ([EMAIL])
AI Mode
AI Mode
All
All
Images
Images
Videos
Videos
Forums
Forums
Short videos
Short videos
News
News
More filters
More
Tools
Tools
Search Results
Search Results
Videos
Videos
About this result
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ...
YouTube
Note Companion
Jan 11, 2025
About this result
How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ...
YouTube
screenpipe
Jan 22, 2026
About this result
screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38
View all videos
View all
AI Overview
AI Overview
View 2 corroboration links
About this result
Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a "second brain" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux
. It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.
GitHub (+4) - View related links
Here is how to use Screenpipe effectively:
Show more AI Overview
Show more
Discussions and forums
Discussions and forums
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Reddit
·
r/ObsidianMD
·
3 comments
·
1 year ago
·
About this result
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
Reddit
·
r/macapps
·
4 comments
·
1 year ago
·
About this result
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
See more discussions
See more
Web results
Web results
Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe
Screenpipe — Screen AI That Records Everything ...
Screenpipe — Screen AI That Records Everything ...
Screenpipe
https://screenpi.pe
About this result
6 hours ago
—
Screen AI that records your screen & audio 24/7
and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Skywork
https://skywork.ai
› screenpipe-mcp-ai-vision-memory
About this result
Oct 20, 2025
—
Transform your AI experience with
Screenpipe MCP Server
, the ultimate tool for empowering context-aware AI on your desktop.
Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago
Can Screenpipe be your new PKMS? | by Theo James
Can Screenpipe be your new PKMS? | by Theo James
Medium · Theo James
1 year ago
About this result
Screenpipe is an AI-powered application designed for personal knowledge management
. It helps users organize, store, and retrieve information ...
screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe
screenpipe/screenpipe: Run agents that work for you ...
screenpipe/screenpipe: Run agents that work for you ...
GitHub
https://github.com
› screenpipe › screenpipe
About this result
remember everything - never forget what you saw, heard, or did;
run agents that work based on what you do
- pipes are agents triggered by your work activity.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...
Screenpipe vs Limitless
Screenpipe vs Limitless
Mintlify
https://mintlify.com
› screenpipe › comparison › vs-limit...
About this result
screenpipe: Multi-monitor:
Captures all connected monitors
; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...
Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago
Introducing screenpipe: AI-powered context engine for devs
Introducing screenpipe: AI-powered context engine for devs
LinkedIn · Matthew Diakonov
10+ reactions · 1 year ago
About this result
screen pipe is a context layer that allows you to put your desktop history
. In AI, developers can build apps for basic context and then publish to Screen Pipe ...
Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources
Resources - Screenpipe Use Cases & Guides
Resources - Screenpipe Use Cases & Guides
Screenpipe
https://screenpi.pe
› resources
About this result
Explore how
Screenpipe helps you capture, search, and recall everything on your screen
. Discover use cases for personal knowledge management, meeting notes, ...
Missing:
effectively
| Show results with:
effectively
effectively
I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago
I built an open-source app that records your screen 24/7 and ...
I built an open-source app that records your screen 24/7 and ...
Reddit · r/windowsapps
10+ comments · 2 months ago
About this result
I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22
it's called screenpipe - it runs in the background,
captures your screen
via Windows OCR and Windows Accessibility API and your audio via ...
People also search for
People also search for
How would i use screenpipe effectively on android
How would i use screenpipe effectively
on android
How to use screenpipe
How
to
use screenpipe
Screenpipe Reddit
Screenpipe
Reddit
Screenpipe documentation
Screenpipe
documentation
Screenpipe github
Screenpipe
github
Screenpipe Review
Screenpipe
Review
Screenpipe AI
Screenpipe
AI
Is screenpipe free
Is
screenpipe
free
Page navigation
Page navigation
1
Page 2
2
Page 3
3
Page 4
4
Page 5...
|
72610
|
|
72612
|
1771
|
47
|
2026-04-22T15:58:18.214668+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-22/1776 /Users/lukas/.screenpipe/data/data/2026-04-22/1776873498214_m2.jpg...
|
Firefox
|
how would I use screenpipe effectively - Google Se how would I use screenpipe effectively - Google Search — Personal...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
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
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Skip to main content
Skip to main content
Accessibility help
Accessibility help
Accessibility feedback
Accessibility feedback
Go to Google Home
how would I use screenpipe effectively
how would I use screenpipe effectively
Clear
Search by voice
Search by image
Search
Google apps
Google Account: Lukáš Koválik ([EMAIL])
AI Mode
AI Mode
All
All
Images
Images
Videos
Videos
Forums
Forums
Short videos
Short videos
News
News
More filters
More
Tools
Tools
Search Results
Search Results
Videos
Videos
About this result
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ...
YouTube
Note Companion
Jan 11, 2025
About this result
How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ...
YouTube
screenpipe
Jan 22, 2026
About this result
screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38
View all videos
View all
AI Overview
AI Overview
View 2 corroboration links
About this result
Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a "second brain" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux
. It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.
GitHub (+4) – View related links
Here is how to use Screenpipe effectively:
1. Setup and Optimization
1. Setup and Optimization
Show more AI Overview
Show more
Discussions and forums
Discussions and forums
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Reddit
·
r/ObsidianMD
·
3 comments
·
1 year ago
·
About this result
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
Reddit
·
r/macapps
·
4 comments
·
1 year ago
·
About this result
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
See more discussions
See more
Web results
Web results
Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe
Screenpipe — Screen AI That Records Everything ...
Screenpipe — Screen AI That Records Everything ...
Screenpipe
https://screenpi.pe
About this result
6 hours ago
—
Screen AI that records your screen & audio 24/7
and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Skywork
https://skywork.ai
› screenpipe-mcp-ai-vision-memory
About this result
Oct 20, 2025
—
Transform your AI experience with
Screenpipe MCP Server
, the ultimate tool for empowering context-aware AI on your desktop.
Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago
Can Screenpipe be your new PKMS? | by Theo James
Can Screenpipe be your new PKMS? | by Theo James
Medium · Theo James
1 year ago
About this result
Screenpipe is an AI-powered application designed for personal knowledge management
. It helps users organize, store, and retrieve information ...
screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe
screenpipe/screenpipe: Run agents that work for you ...
screenpipe/screenpipe: Run agents that work for you ...
GitHub
https://github.com
› screenpipe › screenpipe
About this result
remember everything - never forget what you saw, heard, or did;
run agents that work based on what you do
- pipes are agents triggered by your work activity.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...
Screenpipe vs Limitless
Screenpipe vs Limitless
Mintlify
https://mintlify.com
› screenpipe › comparison › vs-limit...
About this result
screenpipe: Multi-monitor:
Captures all connected monitors
; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...
Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago
Introducing screenpipe: AI-powered context engine for devs
Introducing screenpipe: AI-powered context engine for devs
LinkedIn · Matthew Diakonov
10+ reactions · 1 year ago
About this result
screen pipe is a context layer that allows you to put your desktop history
. In AI, developers can build apps for basic context and then publish to Screen Pipe ...
Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources
Resources - Screenpipe Use Cases & Guides
Resources - Screenpipe Use Cases & Guides
Screenpipe
https://screenpi.pe
› resources
About this result
Explore how
Screenpipe helps you capture, search, and recall everything on your screen
. Discover use cases for personal knowledge management, meeting notes, ...
Missing:
effectively
| Show results with:
effectively
effectively
I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago
I built an open-source app that records your screen 24/7 and ...
I built an open-source app that records your screen 24/7 and ...
Reddit · r/windowsapps
10+ comments · 2 months ago
About this result
I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22
it's called screenpipe - it runs in the background,
captures your screen
via Windows OCR and Windows Accessibility API and your audio via ...
People also search for
People also search for
How would i use screenpipe effectively on android
How would i use screenpipe effectively
on android
How to use screenpipe
How
to
use screenpipe
Screenpipe Reddit
Screenpipe
Reddit
Screenpipe documentation
Screenpipe
documentation
Screenpipe github
Screenpipe
github
Screenpipe Review
Screenpipe
Review
Screenpipe AI
Screenpipe
AI
Is screenpipe free
Is
screenpipe
free
Page navigation
Page navigation
1
Page 2...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.4010971,"top":0.0518755,"width":0.05501995,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (69) - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.45611703,"top":0.0518755,"width":0.05501995,"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.39926863,"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.41256648,"top":0.10614525,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.39926863,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.41256648,"top":0.13886672,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.39926863,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.41256648,"top":0.17158818,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"100.73.206.126:8768/","depth":4,"bounds":{"left":0.39926863,"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":"100.73.206.126:8768/","depth":5,"bounds":{"left":0.41256648,"top":0.20430966,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.39926863,"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":"Today's Deals","depth":5,"bounds":{"left":0.41256648,"top":0.23703113,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"bounds":{"left":0.39926863,"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":"Shameless • HBO Max","depth":5,"bounds":{"left":0.41256648,"top":0.2697526,"width":0.03873005,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"install screenpipe - screenpipe docs","depth":4,"bounds":{"left":0.39926863,"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":"install screenpipe - screenpipe docs","depth":5,"bounds":{"left":0.41256648,"top":0.30247405,"width":0.0631649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.39926863,"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":"New Tab","depth":5,"bounds":{"left":0.41256648,"top":0.33519554,"width":0.014960106,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.39926863,"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":"Screenpipe — Archive","depth":5,"bounds":{"left":0.41256648,"top":0.367917,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.39926863,"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":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.41256648,"top":0.40063846,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.39926863,"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":"Claude Platform","depth":5,"bounds":{"left":0.41256648,"top":0.43335995,"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.39926863,"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":"rescue time detailed overview - Google Search","depth":5,"bounds":{"left":0.41256648,"top":0.4660814,"width":0.08128324,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"how would I use screenpipe effectively - Google Search","depth":4,"bounds":{"left":0.39926863,"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":"how would I use screenpipe effectively - Google Search","depth":5,"bounds":{"left":0.41256648,"top":0.49880287,"width":0.0965758,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.5006649,"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.40209442,"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.40209442,"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.41306517,"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.4242021,"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.4353391,"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.44647607,"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 main content","depth":7,"bounds":{"left":0.51662236,"top":0.0981644,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to main content","depth":8,"bounds":{"left":0.5221077,"top":0.101356745,"width":0.025598405,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility help","depth":7,"bounds":{"left":0.51662236,"top":0.0981644,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility help","depth":8,"bounds":{"left":0.52227396,"top":0.101356745,"width":0.025265958,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Accessibility feedback","depth":7,"bounds":{"left":0.51662236,"top":0.12051077,"width":0.03656915,"height":0.035115723},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Accessibility feedback","depth":8,"bounds":{"left":0.52227396,"top":0.123703115,"width":0.025265958,"height":0.028731046},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to Google Home","depth":10,"bounds":{"left":0.52177525,"top":0.08060654,"width":0.030585106,"height":0.026336791},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"how would I use screenpipe effectively","depth":9,"bounds":{"left":0.5739694,"top":0.07342378,"width":0.21875,"height":0.03990423},"value":"how would I use screenpipe effectively","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"how would I use screenpipe effectively","depth":10,"bounds":{"left":0.5739694,"top":0.08539505,"width":0.093417555,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear","depth":9,"bounds":{"left":0.7927194,"top":0.07342378,"width":0.015957447,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search by voice","depth":9,"bounds":{"left":0.8103391,"top":0.083798885,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search by image","depth":9,"bounds":{"left":0.82363695,"top":0.083798885,"width":0.013297873,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":9,"bounds":{"left":0.83826464,"top":0.07342378,"width":0.01462766,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google apps","depth":9,"bounds":{"left":0.9640958,"top":0.07741421,"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":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":8,"bounds":{"left":0.9800532,"top":0.07741421,"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":"AXLink","text":"AI Mode","depth":17,"bounds":{"left":0.5696476,"top":0.12210695,"width":0.025930852,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Mode","depth":19,"bounds":{"left":0.57363695,"top":0.13647246,"width":0.017952127,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"All","depth":17,"bounds":{"left":0.59557843,"top":0.12210695,"width":0.013464096,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":20,"bounds":{"left":0.59956783,"top":0.13647246,"width":0.005485372,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Images","depth":17,"bounds":{"left":0.6090425,"top":0.12210695,"width":0.023769947,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Images","depth":19,"bounds":{"left":0.6130319,"top":0.13647246,"width":0.015791224,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Videos","depth":17,"bounds":{"left":0.6328125,"top":0.12210695,"width":0.022772606,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Videos","depth":19,"bounds":{"left":0.63680184,"top":0.13647246,"width":0.014793883,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forums","depth":17,"bounds":{"left":0.6555851,"top":0.12210695,"width":0.024268618,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forums","depth":19,"bounds":{"left":0.65957445,"top":0.13647246,"width":0.016289894,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Short videos","depth":17,"bounds":{"left":0.67985374,"top":0.12210695,"width":0.03557181,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Short videos","depth":19,"bounds":{"left":0.6838431,"top":0.13647246,"width":0.027593086,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"News","depth":17,"bounds":{"left":0.71542555,"top":0.12210695,"width":0.019946808,"height":0.03830806},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"News","depth":19,"bounds":{"left":0.7194149,"top":0.13647246,"width":0.011968086,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More filters","depth":17,"bounds":{"left":0.73537236,"top":0.12210695,"width":0.025099734,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":20,"bounds":{"left":0.7393617,"top":0.13647246,"width":0.011136968,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Tools","depth":16,"bounds":{"left":0.76047206,"top":0.12210695,"width":0.02543218,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Tools","depth":18,"bounds":{"left":0.76446146,"top":0.13647246,"width":0.011469414,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Search Results","depth":8,"bounds":{"left":0.51296544,"top":0.16041501,"width":0.0003324468,"height":0.0007980846},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search Results","depth":9,"bounds":{"left":0.51296544,"top":0.16041501,"width":0.03158245,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Videos","depth":15,"bounds":{"left":0.57363695,"top":0.18834797,"width":0.02244016,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Videos","depth":16,"bounds":{"left":0.57363695,"top":0.18834797,"width":0.02244016,"height":0.022346368},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":17,"bounds":{"left":0.59607714,"top":0.19074222,"width":0.017287234,"height":0.015961692},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago","depth":18,"bounds":{"left":0.62948805,"top":0.22505985,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago","depth":19,"bounds":{"left":0.62948805,"top":0.22505985,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automate your entire company using screenpipe","depth":22,"bounds":{"left":0.62948805,"top":0.22665602,"width":0.116855055,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.2585794,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.2585794,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 weeks ago","depth":21,"bounds":{"left":0.62948805,"top":0.27613726,"width":0.026097074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.25618514,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28","depth":18,"bounds":{"left":0.57363695,"top":0.22505985,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago","depth":18,"bounds":{"left":0.62948805,"top":0.31125298,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago","depth":19,"bounds":{"left":0.62948805,"top":0.31125298,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Automate Your To Do List with Screenpipe","depth":22,"bounds":{"left":0.62948805,"top":0.31284916,"width":0.100398935,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.34477255,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.34477255,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 weeks ago","depth":21,"bounds":{"left":0.62948805,"top":0.3623304,"width":0.026097074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.3423783,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28","depth":18,"bounds":{"left":0.57363695,"top":0.31125298,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025","depth":18,"bounds":{"left":0.62948805,"top":0.39744613,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025","depth":19,"bounds":{"left":0.62948805,"top":0.39744613,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"How I use Screenpipe + Auto-pay to automatically create ...","depth":22,"bounds":{"left":0.62948805,"top":0.3990423,"width":0.14245346,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.4309657,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Note Companion","depth":21,"bounds":{"left":0.6505984,"top":0.4309657,"width":0.036236703,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jan 11, 2025","depth":21,"bounds":{"left":0.62948805,"top":0.44852355,"width":0.026595745,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.68484044,"top":0.42857143,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56","depth":18,"bounds":{"left":0.57363695,"top":0.39744613,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026","depth":18,"bounds":{"left":0.62948805,"top":0.48363927,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026","depth":19,"bounds":{"left":0.62948805,"top":0.48363927,"width":0.16090426,"height":0.06624102},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe 2.0: open source AI that remembers everything ...","depth":22,"bounds":{"left":0.62948805,"top":0.48523542,"width":0.14744017,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"YouTube","depth":21,"bounds":{"left":0.62948805,"top":0.5171588,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":21,"bounds":{"left":0.6505984,"top":0.5171588,"width":0.024102394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jan 22, 2026","depth":21,"bounds":{"left":0.62948805,"top":0.53471667,"width":0.026928192,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":19,"bounds":{"left":0.6727061,"top":0.51476455,"width":0.017287234,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38","depth":18,"bounds":{"left":0.57363695,"top":0.48363927,"width":0.04920213,"height":0.06624102},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"View all videos","depth":16,"bounds":{"left":0.62017953,"top":0.56264967,"width":0.12367021,"height":0.031923383},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View all","depth":18,"bounds":{"left":0.6690492,"top":0.5714286,"width":0.01662234,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"AI Overview","depth":21,"bounds":{"left":0.58361036,"top":0.6256983,"width":0.026263298,"height":0.014764565},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI Overview","depth":22,"bounds":{"left":0.58361036,"top":0.6256983,"width":0.026263298,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"View 2 corroboration links","depth":21,"bounds":{"left":0.76180184,"top":0.61372703,"width":0.017287234,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"About this result","depth":22,"bounds":{"left":0.7844083,"top":0.6256983,"width":0.005984043,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a \"second brain\" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux","depth":27,"bounds":{"left":0.57363695,"top":0.65682364,"width":0.21210106,"height":0.054668795},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.","depth":27,"bounds":{"left":0.57363695,"top":0.69513166,"width":0.21110372,"height":0.054668795},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"GitHub (+4) – View related links","depth":27,"bounds":{"left":0.6427859,"top":0.73343974,"width":0.025598405,"height":0.015961692},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Here is how to use Screenpipe effectively:","depth":27,"bounds":{"left":0.57363695,"top":0.76536316,"width":0.10106383,"height":0.016360734},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"1. Setup and Optimization","depth":26,"bounds":{"left":0.57363695,"top":0.802075,"width":0.21675532,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. Setup and Optimization","depth":27,"bounds":{"left":0.57363695,"top":0.8032721,"width":0.080119684,"height":0.020351157},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Show more AI Overview","depth":19,"bounds":{"left":0.57363695,"top":0.8858739,"width":0.21675532,"height":0.03990423},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Show more","depth":21,"bounds":{"left":0.6619016,"top":0.89864326,"width":0.024268618,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Discussions and forums","depth":15,"bounds":{"left":0.57363695,"top":0.9776536,"width":0.077792555,"height":0.022346368},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discussions and forums","depth":16,"bounds":{"left":0.57363695,"top":0.9776536,"width":0.077792555,"height":0.022346368},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago","depth":19,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":20,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":21,"bounds":{"left":0.57363695,"top":1.0,"width":0.20079787,"height":-0.009577036},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian","depth":22,"bounds":{"left":0.57363695,"top":1.0,"width":0.1966423,"height":-0.009577036},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":22,"bounds":{"left":0.58294547,"top":1.0,"width":0.013796543,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":22,"bounds":{"left":0.59674203,"top":1.0,"width":0.0038231383,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"r/ObsidianMD","depth":24,"bounds":{"left":0.60056514,"top":1.0,"width":0.024767287,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":25,"bounds":{"left":0.6253325,"top":1.0,"width":0.003656915,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3 comments","depth":25,"bounds":{"left":0.62898934,"top":1.0,"width":0.021941489,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":24,"bounds":{"left":0.6509308,"top":1.0,"width":0.003656915,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":24,"bounds":{"left":0.65458775,"top":1.0,"width":0.019115692,"height":-0.03511572},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":21,"bounds":{"left":0.59674203,"top":1.0,"width":0.0038231383,"height":-0.033519506},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":20,"bounds":{"left":0.67370343,"top":1.0,"width":0.017287234,"height":-0.03272152},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago","depth":17,"bounds":{"left":0.77443486,"top":1.0,"width":0.015957447,"height":-0.014764547},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXLink","text":"Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":20,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screenpipe: record your screens & mics all day long and summarize ...","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"r/macapps","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 comments","depth":25,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"·","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"See more discussions","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"See more","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Web results","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web results","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe — Screen AI That Records Everything ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe — Screen AI That Records Everything ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://screenpi.pe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"6 hours ago","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"—","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screen AI that records your screen & audio 24/7","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe MCP Server: The Ultimate Guide to Giving AI ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Skywork","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://skywork.ai","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe-mcp-ai-vision-memory","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Oct 20, 2025","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"—","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transform your AI experience with","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe MCP Server","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", the ultimate tool for empowering context-aware AI on your desktop.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Can Screenpipe be your new PKMS? | by Theo James","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Can Screenpipe be your new PKMS? | by Theo James","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Medium · Theo James","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1 year ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe is an AI-powered application designed for personal knowledge management","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". It helps users organize, store, and retrieve information ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"screenpipe/screenpipe: Run agents that work for you ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe/screenpipe: Run agents that work for you ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"GitHub","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://github.com","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe › screenpipe","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"remember everything - never forget what you saw, heard, or did;","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"run agents that work based on what you do","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"- pipes are agents triggered by your work activity.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe vs Limitless","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe vs Limitless","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mintlify","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://mintlify.com","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› screenpipe › comparison › vs-limit...","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screenpipe: Multi-monitor:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Captures all connected monitors","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Introducing screenpipe: AI-powered context engine for devs","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Introducing screenpipe: AI-powered context engine for devs","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"LinkedIn · Matthew Diakonov","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10+ reactions · 1 year ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"screen pipe is a context layer that allows you to put your desktop history","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". In AI, developers can build apps for basic context and then publish to Screen Pipe ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Resources - Screenpipe Use Cases & Guides","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resources - Screenpipe Use Cases & Guides","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"https://screenpi.pe","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"› resources","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Explore how","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe helps you capture, search, and recall everything on your screen","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":". Discover use cases for personal knowledge management, meeting notes, ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Missing:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"| Show results with:","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"effectively","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"effectively","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago","depth":16,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"I built an open-source app that records your screen 24/7 and ...","depth":17,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I built an open-source app that records your screen 24/7 and ...","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit · r/windowsapps","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10+ comments · 2 months ago","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"About this result","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"it's called screenpipe - it runs in the background,","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"captures your screen","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"via Windows OCR and Windows Accessibility API and your audio via ...","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"People also search for","depth":14,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"People also search for","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How would i use screenpipe effectively on android","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How would i use screenpipe effectively","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"on android","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How to use screenpipe","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"use screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe Reddit","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reddit","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe documentation","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"documentation","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe github","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"github","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe Review","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Screenpipe AI","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Is screenpipe free","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Is","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"screenpipe","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"free","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Page navigation","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page navigation","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Page 2","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
4743460518269993377
|
8830281412067567992
|
visual_change
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
West DXP4800PLUS-B5F8
Inbox (69) - [EMAIL] - Gmail
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
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Screenpipe — Archive
Screenpipe — Archive
[IP_ADDRESS]:8768/
[IP_ADDRESS]:8768/
Today's Deals
Today's Deals
Shameless • HBO Max
Shameless • HBO Max
install screenpipe - screenpipe docs
install screenpipe - screenpipe docs
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
rescue time detailed overview - Google Search
rescue time detailed overview - Google Search
how would I use screenpipe effectively - Google Search
how would I use screenpipe effectively - Google Search
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Skip to main content
Skip to main content
Accessibility help
Accessibility help
Accessibility feedback
Accessibility feedback
Go to Google Home
how would I use screenpipe effectively
how would I use screenpipe effectively
Clear
Search by voice
Search by image
Search
Google apps
Google Account: Lukáš Koválik ([EMAIL])
AI Mode
AI Mode
All
All
Images
Images
Videos
Videos
Forums
Forums
Short videos
Short videos
News
News
More filters
More
Tools
Tools
Search Results
Search Results
Videos
Videos
About this result
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe YouTube screenpipe 2 weeks ago
Automate your entire company using screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate your entire company using screenpipe by screenpipe on YouTube. Play on Google. 2:28
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe YouTube screenpipe 2 weeks ago
Automate Your To Do List with Screenpipe
YouTube
screenpipe
2 weeks ago
About this result
Automate Your To Do List with Screenpipe by screenpipe on YouTube. Play on Google. 2:28
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ... YouTube Note Companion Jan 11, 2025
How I use Screenpipe + Auto-pay to automatically create ...
YouTube
Note Companion
Jan 11, 2025
About this result
How I use Screenpipe + Auto-pay to automatically create ... by Note Companion on YouTube. Play on Google. 1:56
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ... YouTube screenpipe Jan 22, 2026
screenpipe 2.0: open source AI that remembers everything ...
YouTube
screenpipe
Jan 22, 2026
About this result
screenpipe 2.0: open source AI that remembers everything ... by screenpipe on YouTube. Play on Google. 1:38
View all videos
View all
AI Overview
AI Overview
View 2 corroboration links
About this result
Using Screenpipe effectively involves leveraging its 100% local, event-driven, and open-source nature to create a "second brain" that remembers, searches, and acts on your digital activity across Windows, macOS, and Linux
. It goes beyond simple screen recording by extracting text via OCR and accessibility APIs, providing a semantic search layer over your work history.
GitHub (+4) – View related links
Here is how to use Screenpipe effectively:
1. Setup and Optimization
1. Setup and Optimization
Show more AI Overview
Show more
Discussions and forums
Discussions and forums
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian
Reddit
·
r/ObsidianMD
·
3 comments
·
1 year ago
·
About this result
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in Obsidian Reddit · r/ObsidianMD · 3 comments · 1 year ago
Anyone tries screenpipe? Looks like it's pretty useful productivity app to digitally record your computer activities, can export it and use in ... More
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
screenpipe: record your screens & mics all day long and summarize ...
Reddit
·
r/macapps
·
4 comments
·
1 year ago
·
About this result
screenpipe: record your screens & mics all day long and summarize ... Reddit · r/macapps · 4 comments · 1 year ago
See more discussions
See more
Web results
Web results
Screenpipe — Screen AI That Records Everything ... Screenpipe https://screenpi.pe
Screenpipe — Screen AI That Records Everything ...
Screenpipe — Screen AI That Records Everything ...
Screenpipe
https://screenpi.pe
About this result
6 hours ago
—
Screen AI that records your screen & audio 24/7
and pipes it into automations: meeting notes, daily digests, time tracking, and 50+ more.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe MCP Server: The Ultimate Guide to Giving AI ... Skywork https://skywork.ai › screenpipe-mcp-ai-vision-memory
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Screenpipe MCP Server: The Ultimate Guide to Giving AI ...
Skywork
https://skywork.ai
› screenpipe-mcp-ai-vision-memory
About this result
Oct 20, 2025
—
Transform your AI experience with
Screenpipe MCP Server
, the ultimate tool for empowering context-aware AI on your desktop.
Can Screenpipe be your new PKMS? | by Theo James Medium · Theo James 1 year ago
Can Screenpipe be your new PKMS? | by Theo James
Can Screenpipe be your new PKMS? | by Theo James
Medium · Theo James
1 year ago
About this result
Screenpipe is an AI-powered application designed for personal knowledge management
. It helps users organize, store, and retrieve information ...
screenpipe/screenpipe: Run agents that work for you ... GitHub https://github.com › screenpipe › screenpipe
screenpipe/screenpipe: Run agents that work for you ...
screenpipe/screenpipe: Run agents that work for you ...
GitHub
https://github.com
› screenpipe › screenpipe
About this result
remember everything - never forget what you saw, heard, or did;
run agents that work based on what you do
- pipes are agents triggered by your work activity.
Missing:
effectively
| Show results with:
effectively
effectively
Screenpipe vs Limitless Mintlify https://mintlify.com › screenpipe › comparison › vs-limit...
Screenpipe vs Limitless
Screenpipe vs Limitless
Mintlify
https://mintlify.com
› screenpipe › comparison › vs-limit...
About this result
screenpipe: Multi-monitor:
Captures all connected monitors
; Event-driven: Only captures when something changes; Storage efficient: ~5-10 GB ...
Introducing screenpipe: AI-powered context engine for devs LinkedIn · Matthew Diakonov 10+ reactions · 1 year ago
Introducing screenpipe: AI-powered context engine for devs
Introducing screenpipe: AI-powered context engine for devs
LinkedIn · Matthew Diakonov
10+ reactions · 1 year ago
About this result
screen pipe is a context layer that allows you to put your desktop history
. In AI, developers can build apps for basic context and then publish to Screen Pipe ...
Resources - Screenpipe Use Cases & Guides Screenpipe https://screenpi.pe › resources
Resources - Screenpipe Use Cases & Guides
Resources - Screenpipe Use Cases & Guides
Screenpipe
https://screenpi.pe
› resources
About this result
Explore how
Screenpipe helps you capture, search, and recall everything on your screen
. Discover use cases for personal knowledge management, meeting notes, ...
Missing:
effectively
| Show results with:
effectively
effectively
I built an open-source app that records your screen 24/7 and ... Reddit · r/windowsapps 10+ comments · 2 months ago
I built an open-source app that records your screen 24/7 and ...
I built an open-source app that records your screen 24/7 and ...
Reddit · r/windowsapps
10+ comments · 2 months ago
About this result
I built an open-source app that records your screen 24/7 and ... by louis3195 on Reddit. Play on Reddit. 0:22
it's called screenpipe - it runs in the background,
captures your screen
via Windows OCR and Windows Accessibility API and your audio via ...
People also search for
People also search for
How would i use screenpipe effectively on android
How would i use screenpipe effectively
on android
How to use screenpipe
How
to
use screenpipe
Screenpipe Reddit
Screenpipe
Reddit
Screenpipe documentation
Screenpipe
documentation
Screenpipe github
Screenpipe
github
Screenpipe Review
Screenpipe
Review
Screenpipe AI
Screenpipe
AI
Is screenpipe free
Is
screenpipe
free
Page navigation
Page navigation
1
Page 2...
|
NULL
|
|
20957
|
464
|
20
|
2026-04-15T09:43:31.357964+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776246211357_m2.jpg...
|
Firefox
|
JY-18909: Print company logo debugging information JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet — Work...
|
1
|
github.com/jiminny/prophet/pull/472/changes
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,552) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
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
prophet
prophet
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Issues
Issues
Pull requests (6)
Pull requests
(
6
)
Agents
Agents
Actions
Actions
Projects
Projects
Wiki
Wiki
Security and quality (20)
Security and quality
(
20
)
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-18909: Print company logo debugging information #472 Edit title
JY-18909: Print company logo debugging information
#
472
Edit title
Preview
Preview
Ready to merge
Ready to merge
Code
Code
Open
steliyan-g
steliyan-g
wants to merge 1 commit into
master
master
from
JY-18909-debug-company-logo
JY-18909-debug-company-logo
Copy head branch name to clipboard
Lines changed: 17 additions & 0 deletions
Conversation (3)
Conversation
(
3
)
Commits (1)
Commits
(
1
)
Checks (4)
Checks
(
4
)
Files changed (1)
Files changed
(
1
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
0
/
1
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
src/component/ask_anything
async_aa_report_processor.py
async_aa_report_processor.py
Collapse file
src/component/ask_anything/async_aa_report_processor.py
src/component/ask_anything/async_aa_report_processor.py
src/component/ask_anything/async_aa_report_processor.py
Copy file name to clipboard
Expand all lines: src/component/ask_anything/async_aa_report_processor.py
Lines changed: 17 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -103,6 +103,10 @@ async def _process_report_request(self, async_request: AAReportAsyncRequest) ->
103
report_content
=
await
self
.
_build_and_validate_report
(
async_request
)
103
report_content
=
await
self
.
_build_and_validate_report
(
async_request
)
104...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,552) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"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.015625,"top":0.26319444,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.21367188,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.28819445,"width":0.009375,"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.003125,"top":0.31180555,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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":"prophet","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"prophet","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","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,"bounds":{"left":0.1125,"top":0.0,"width":0.013671875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Issues","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issues","depth":14,"bounds":{"left":0.14570312,"top":0.0,"width":0.015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Pull requests (6)","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,"bounds":{"left":0.18164062,"top":0.0,"width":0.0328125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.21835938,"top":0.0,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":14,"bounds":{"left":0.221875,"top":0.0,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.22539063,"top":0.0,"width":0.001953125,"height":0.011805556},"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,"bounds":{"left":0.24609375,"top":0.0,"width":0.017578125,"height":0.011805556},"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,"bounds":{"left":0.28359374,"top":0.0,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Projects","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Projects","depth":14,"bounds":{"left":0.32226562,"top":0.0,"width":0.020703126,"height":0.011805556},"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,"bounds":{"left":0.3625,"top":0.0,"width":0.010546875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security and quality (20)","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,"bounds":{"left":0.39375,"top":0.0,"width":0.05,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":14,"bounds":{"left":0.44804686,"top":0.0,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20","depth":14,"bounds":{"left":0.4515625,"top":0.0,"width":0.006640625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":14,"bounds":{"left":0.45820314,"top":0.0,"width":0.001953125,"height":0.011805556},"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,"bounds":{"left":0.47890624,"top":0.0,"width":0.019921875,"height":0.011805556},"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,"bounds":{"left":0.51875,"top":0.0,"width":0.020703126,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Important update","depth":10,"bounds":{"left":0.10976563,"top":0.0,"width":0.000390625,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Important update","depth":11,"bounds":{"left":0.10976563,"top":0.0,"width":0.04609375,"height":0.011805556},"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.10976563,"top":0.0,"width":0.25351563,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Review this update","depth":10,"bounds":{"left":0.36328125,"top":0.0,"width":0.048046876,"height":0.011805556},"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.36328125,"top":0.0,"width":0.048046876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and manage your preferences in your","depth":10,"bounds":{"left":0.41132814,"top":0.0,"width":0.096875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"GitHub account settings","depth":10,"bounds":{"left":0.50820315,"top":0.0,"width":0.061328124,"height":0.011805556},"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.50820315,"top":0.0,"width":0.061328124,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"bounds":{"left":0.56953126,"top":0.0,"width":0.0015625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dismiss banner","depth":9,"bounds":{"left":0.9785156,"top":0.0,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"JY-18909: Print company logo debugging information #472 Edit title","depth":13,"bounds":{"left":0.10625,"top":0.0,"width":0.33359376,"height":0.027777778},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"JY-18909: Print company logo debugging information","depth":14,"bounds":{"left":0.10625,"top":0.0,"width":0.28710938,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"#","depth":15,"bounds":{"left":0.39648438,"top":0.0,"width":0.0078125,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"472","depth":15,"bounds":{"left":0.40429688,"top":0.0,"width":0.021484375,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit title","depth":14,"bounds":{"left":0.42734376,"top":0.0,"width":0.0125,"height":0.022222223},"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.9453125,"top":0.0,"width":0.03671875,"height":0.019444445},"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.9515625,"top":0.0,"width":0.01796875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Ready to merge","depth":13,"bounds":{"left":0.8460938,"top":0.0,"width":0.06015625,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ready to merge","depth":15,"bounds":{"left":0.8605469,"top":0.0,"width":0.040625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Code","depth":13,"bounds":{"left":0.9078125,"top":0.0,"width":0.0328125,"height":0.022222223},"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.9128906,"top":0.0,"width":0.01328125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open","depth":13,"bounds":{"left":0.11875,"top":0.016666668,"width":0.0140625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"steliyan-g","depth":15,"bounds":{"left":0.140625,"top":0.013888889,"width":0.0265625,"height":0.014583333},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"steliyan-g","depth":16,"bounds":{"left":0.140625,"top":0.015277778,"width":0.0265625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"wants to merge 1 commit into","depth":15,"bounds":{"left":0.16875,"top":0.015277778,"width":0.07421875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"master","depth":15,"bounds":{"left":0.24453124,"top":0.013888889,"width":0.021875,"height":0.015277778},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"master","depth":16,"bounds":{"left":0.246875,"top":0.015972223,"width":0.0171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"from","depth":16,"bounds":{"left":0.26796874,"top":0.015277778,"width":0.01171875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-18909-debug-company-logo","depth":16,"bounds":{"left":0.28125,"top":0.013888889,"width":0.08085938,"height":0.015277778},"role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-debug-company-logo","depth":17,"bounds":{"left":0.28359374,"top":0.015972223,"width":0.076171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy head branch name to clipboard","depth":16,"bounds":{"left":0.36367187,"top":0.011805556,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 17 additions & 0 deletions","depth":14,"bounds":{"left":0.9546875,"top":0.060416665,"width":0.0234375,"height":0.099305555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Conversation (3)","depth":16,"bounds":{"left":0.10625,"top":0.045138888,"width":0.06757812,"height":0.027083334},"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.12226562,"top":0.05277778,"width":0.033203125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.1671875,"top":0.05277778,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":18,"bounds":{"left":0.17070313,"top":0.05277778,"width":0.003125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.17382812,"top":0.05277778,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Commits (1)","depth":16,"bounds":{"left":0.17382812,"top":0.045138888,"width":0.055859376,"height":0.027083334},"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.18984374,"top":0.05277778,"width":0.022265624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.22304687,"top":0.05277778,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.2265625,"top":0.05277778,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.22890624,"top":0.05277778,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Checks (4)","depth":16,"bounds":{"left":0.2296875,"top":0.045138888,"width":0.053125,"height":0.027083334},"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.24570313,"top":0.05277778,"width":0.01875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.27617186,"top":0.05277778,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":18,"bounds":{"left":0.2796875,"top":0.05277778,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.28320312,"top":0.05277778,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Files changed (1)","depth":16,"bounds":{"left":0.2828125,"top":0.045138888,"width":0.06875,"height":0.027083334},"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.29882812,"top":0.05277778,"width":0.03515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.3449219,"top":0.05277778,"width":0.003515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":18,"bounds":{"left":0.3484375,"top":0.05277778,"width":0.00234375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.35078126,"top":0.05277778,"width":0.001953125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pull Request Toolbar","depth":14,"bounds":{"left":0.10625,"top":0.093055554,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull Request Toolbar","depth":15,"bounds":{"left":0.10625,"top":0.09513889,"width":0.03515625,"height":0.07083333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file tree","depth":14,"bounds":{"left":0.10625,"top":0.083333336,"width":0.0109375,"height":0.019444445},"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.1203125,"top":0.083333336,"width":0.047265626,"height":0.019444445},"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.13164063,"top":0.088194445,"width":0.026171874,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":15,"bounds":{"left":0.84414065,"top":0.088194445,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"bounds":{"left":0.8472656,"top":0.088194445,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":15,"bounds":{"left":0.85117185,"top":0.088194445,"width":0.00234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"viewed","depth":15,"bounds":{"left":0.8550781,"top":0.088194445,"width":0.015234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Submit review","depth":14,"bounds":{"left":0.88007814,"top":0.083333336,"width":0.0453125,"height":0.019444445},"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.88359374,"top":0.088194445,"width":0.0171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"review","depth":16,"bounds":{"left":0.9007813,"top":0.088194445,"width":0.01484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open diff view settings","depth":14,"bounds":{"left":0.9285156,"top":0.083333336,"width":0.0109375,"height":0.019444445},"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.94921875,"top":0.083333336,"width":0.0109375,"height":0.019444445},"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.96171874,"top":0.083333336,"width":0.0203125,"height":0.019444445},"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.97148436,"top":0.088194445,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":16,"bounds":{"left":0.9746094,"top":0.088194445,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":16,"bounds":{"left":0.9777344,"top":0.088194445,"width":0.001953125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter files…","depth":16,"bounds":{"left":0.11953125,"top":0.12638889,"width":0.080078125,"height":0.020833334},"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.203125,"top":0.12569444,"width":0.0125,"height":0.022222223},"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.10664062,"top":0.15902779,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File tree","depth":16,"bounds":{"left":0.10664062,"top":0.16111112,"width":0.016796876,"height":0.045833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"src/component/ask_anything","depth":19,"bounds":{"left":0.12539062,"top":0.16458334,"width":0.07304688,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"async_aa_report_processor.py","depth":21,"bounds":{"left":0.12851563,"top":0.18680556,"width":0.078125,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"async_aa_report_processor.py","depth":22,"bounds":{"left":0.12851563,"top":0.18680556,"width":0.078125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse file","depth":14,"bounds":{"left":0.23203126,"top":0.13055556,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"src/component/ask_anything/async_aa_report_processor.py","depth":15,"bounds":{"left":0.24453124,"top":0.13333334,"width":0.15507813,"height":0.014583333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"src/component/ask_anything/async_aa_report_processor.py","depth":16,"bounds":{"left":0.24453124,"top":0.13472222,"width":0.15507813,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"src/component/ask_anything/async_aa_report_processor.py","depth":18,"bounds":{"left":0.24453124,"top":0.13611111,"width":0.15507813,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy file name to clipboard","depth":15,"bounds":{"left":0.40273437,"top":0.13055556,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Expand all lines: src/component/ask_anything/async_aa_report_processor.py","depth":15,"bounds":{"left":0.41367188,"top":0.13055556,"width":0.0109375,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lines changed: 17 additions & 0 deletions","depth":15,"bounds":{"left":0.8886719,"top":0.14166667,"width":0.0234375,"height":0.099305555},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Not Viewed","depth":14,"bounds":{"left":0.91914064,"top":0.13055556,"width":0.03125,"height":0.019444445},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Viewed","depth":16,"bounds":{"left":0.93046874,"top":0.13541667,"width":0.01640625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Comment on this file","depth":14,"bounds":{"left":0.95351565,"top":0.13055556,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More options","depth":14,"bounds":{"left":0.9675781,"top":0.13055556,"width":0.0109375,"height":0.019444445},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Original file line number","depth":17,"bounds":{"left":0.22890624,"top":0.15625,"width":0.02109375,"height":0.04097222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Original file line","depth":17,"bounds":{"left":0.25,"top":0.16388889,"width":0.02109375,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line number","depth":17,"bounds":{"left":0.27109376,"top":0.15625,"width":0.02109375,"height":0.04097222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diff line change","depth":17,"bounds":{"left":0.2921875,"top":0.15625,"width":0.01953125,"height":0.04097222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"@@ -103,6 +103,10 @@ async def _process_report_request(self, async_request: AAReportAsyncRequest) ->","depth":18,"bounds":{"left":0.25546876,"top":0.15833333,"width":0.28203124,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"103","depth":16,"bounds":{"left":0.23320313,"top":0.175,"width":0.00859375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"report_content","depth":18,"bounds":{"left":0.28945312,"top":0.175,"width":0.039453126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.33164063,"top":0.175,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"await","depth":18,"bounds":{"left":0.3371094,"top":0.175,"width":0.0140625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"self","depth":18,"bounds":{"left":0.35429686,"top":0.175,"width":0.0109375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"bounds":{"left":0.36523438,"top":0.175,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"_build_and_validate_report","depth":18,"bounds":{"left":0.3683594,"top":0.175,"width":0.07304688,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.44140625,"top":0.175,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"async_request","depth":18,"bounds":{"left":0.44453126,"top":0.175,"width":0.036328126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.48085937,"top":0.175,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"103","depth":16,"bounds":{"left":0.60976565,"top":0.175,"width":0.008203125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"report_content","depth":18,"bounds":{"left":0.665625,"top":0.175,"width":0.039453126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"=","depth":18,"bounds":{"left":0.7078125,"top":0.175,"width":0.003125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"await","depth":18,"bounds":{"left":0.71367186,"top":0.175,"width":0.0140625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"self","depth":18,"bounds":{"left":0.73046875,"top":0.175,"width":0.011328125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":18,"bounds":{"left":0.74179685,"top":0.175,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"_build_and_validate_report","depth":18,"bounds":{"left":0.7445313,"top":0.175,"width":0.0734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":18,"bounds":{"left":0.8179687,"top":0.175,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"async_request","depth":18,"bounds":{"left":0.82070315,"top":0.175,"width":0.03671875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":18,"bounds":{"left":0.8574219,"top":0.175,"width":0.002734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"104","depth":16,"bounds":{"left":0.23320313,"top":0.19166666,"width":0.00859375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
4705615107949574218
|
8823769768028762377
|
visual_change
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,552) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
JY-18909: Print company logo debugging information by steliyan-g · Pull Request #472 · jiminny/prophet
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
prophet
prophet
Search or jump to…
Type
/
to search
Chat with Copilot
Open Copilot…
Create new...
Issues
Pull requests
Repositories
You have unread notifications(g then n)
Open user navigation menu
Repository navigation
Repository navigation
Code
Code
Issues
Issues
Pull requests (6)
Pull requests
(
6
)
Agents
Agents
Actions
Actions
Projects
Projects
Wiki
Wiki
Security and quality (20)
Security and quality
(
20
)
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-18909: Print company logo debugging information #472 Edit title
JY-18909: Print company logo debugging information
#
472
Edit title
Preview
Preview
Ready to merge
Ready to merge
Code
Code
Open
steliyan-g
steliyan-g
wants to merge 1 commit into
master
master
from
JY-18909-debug-company-logo
JY-18909-debug-company-logo
Copy head branch name to clipboard
Lines changed: 17 additions & 0 deletions
Conversation (3)
Conversation
(
3
)
Commits (1)
Commits
(
1
)
Checks (4)
Checks
(
4
)
Files changed (1)
Files changed
(
1
)
Pull Request Toolbar
Pull Request Toolbar
Collapse file tree
All commits
All commits
0
/
1
viewed
Submit review
Submit
review
Open diff view settings
Open overview panel
Open comments panel
(
0
)
Filter files…
Filter options
File tree
File tree
src/component/ask_anything
async_aa_report_processor.py
async_aa_report_processor.py
Collapse file
src/component/ask_anything/async_aa_report_processor.py
src/component/ask_anything/async_aa_report_processor.py
src/component/ask_anything/async_aa_report_processor.py
Copy file name to clipboard
Expand all lines: src/component/ask_anything/async_aa_report_processor.py
Lines changed: 17 additions & 0 deletions
Not Viewed
Viewed
Comment on this file
More options
Original file line number
Original file line
Diff line number
Diff line change
@@ -103,6 +103,10 @@ async def _process_report_request(self, async_request: AAReportAsyncRequest) ->
103
report_content
=
await
self
.
_build_and_validate_report
(
async_request
)
103
report_content
=
await
self
.
_build_and_validate_report
(
async_request
)
104...
|
NULL
|
|
62364
|
1346
|
30
|
2026-04-21T07:51:32.468903+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757892468_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:34:09
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:34:09","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
1378931867932226413
|
8822320526466484854
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:34:09
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelp• Refinement 2026-04-20.mp4Nikolay Nikolov (Presenting, annotating), 0j Support Daily - in 4 h 9 m100% C47Tue 21 Apr 10:51:32CAT AccountTransformer.php-pRetinementU SyncHubspotObjectsTesttest-and_SyncedAla 8.Mon 20 Apr 16:31Qmportaccountostcnpng© importOpportunityBatch.phpSyncContact.phoService.phpSyocOblects.phpSyndFieldsTralt.php 23.03.26, 103Cllent.php 20.gl© DecorateActvty.php 23.0320, 1050( DeleteObjectsTrakt. php 23.03.26,10%©FieidDefinitions.php 23.03.26,10.59, €© PayioadBulider.php 23.03.28, 10.59, 2.2© Profle. php 2303.21, 10.39, 1.87x8QueryBulder.php 20.04.28, 14.96, 15.80© QueryHandler.php 20.04.28, 14.16, 6.21Queryterator.php 23.03.26, 1059, 2.53© QueryResults.php 23.03.28, 10.58, 1.24Service.php© SyncButchRedisService, php 20.04.26© BaseClent.php 23.03:LayootUpdatedListenet.phpSyocOpportunky.phpCLaas Stce extenos boseStryeа заретя• SyncAccount,phpSyncProfdeOpportunities.phpSyncOpportunitirs.jot.phpOpportunitySyneTrakt.php82. lu Кovas 13vallc function syncContact(atrimg ScraTo): ?ContactSPSETOS & Sthis-2geTA11FLeLdsAsArrwyC"contact"):1f (1 1nLarray( пекои"TS%, sPRias.ec trae)) €Imnda-»logger->infe(*[Salesforce) Sync contact cancelladElelas are not avallabla.', Eccelg' »> ScraTs,werist n Stnis-sarefite-ygatiiser 1a0,=149:SyncHubspotObjectsTest.testHandieWEhN.return niit);G S$ BSerConTact • Stna-29etRecord( condiTypk 'Contact', Scralo, Seialas):/opt/homebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann a14P2150%150%retura Sttrir->inportContact (2sPCantaст):ImportContactOFindOccurrences of '-›symcOpportunv ID app/Console/Commands/Orm S resultsv ©Commands/_/SyncOpportunity.php 3 resultsortunitiesByDate(ScmService, Sirom, Sts, Softset);Vice-› syncOpportunities(SopportunitySymcParameters, Sstrategyl:254 Scount • Scm-Service-syncOpportunities(Sopportunity SyncParameters, Satrategyl:SyncHubspotActiveDeals.php 1 result©SyncOpportunitiesMissingFieidDataCommand.php 1 resur00 app/Console/Commands/Dealinsights 1 result› 00s0p/J0bs/0rm 4 resultsC0 app/Listeners/Omm 1 resur~©LayoutUpdatedListener.php 1 resuk70 Sthis-> sync Opportunities(Slayout):опрр › aрр › Services › Crm › Salesforce › © Service, php › Service › © a importConta2string Screid,2int Soffset): void <1f (Scralo) {7 else (Sthis->syncProfileOpportunities(ScraService, Scraid, Sfros, Sto, Soffset):1961971PESthis->syncOpportunitiesByDate(ScreService, Sfron, Sto, Soffset):meet. google.01:30:0101:54:46UTF-8 ( 4 spacesGalya DimitrovaStefka Stoyanova3 othersNikolay NikolovLukas Kovalik4:31 PM[Platform] Refinement...
|
NULL
|
|
62352
|
1346
|
23
|
2026-04-21T07:51:07.633383+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757867633_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:51:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:51:26","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
8598550204786848736
|
8822320251588586102
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:51:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpRefinement 2026-04-20.mp4Nikolay Nikolov (Presenting, annotating), 0j Support Daily • in 4h 9 m100% C47Tue 21 Apr 10:51:07007Arcountttansformer thepRetinementU SyncHubempotaccountastonng©ImportOpportunityBatch.phpC Calendar@ Conference00rm› Do BulhornD Close• D CopperD CrmObfectsD DecorateActivityDummyHelpersHubspot› DJ Actions461 Ф462463464465466467468Fieids469E Journal470OpportunitySyncStrategyPagination471 ₫0D ProspectSearchStrategy~ E Service Traits@ OpportunitySyncTralt,.php 20.04.26474SyncCrmEntties Tralt.php 20© SyndFieldsTrak. php 23.03.26, 10.59.476© WriteCrmTralt.php 20.04.26, M.36, 2:477478U SyncHubspotObjectsTest.testHandleWithN...479480C0SIMOSUO48324ms482483( SyncCrmEntidies Tralt,phpService.phpSyncAccount.phpSyncOpportunities.Job.phpOpportunitySyncTrait.phptrait SyncCreEntitiesTraitTest Resultsv 1 test passed 1 test total, 24 ms/opt./homebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann &Runtime:PHP 8.3.4Configuration: Wsecs/test/3iaimy/app/Tine: 00:00.298, Menory: 109.50 KB41 457 × 30 Apublic function batchSyncContacts(): intSconfigid • Sthis->tean->getCraConfiguration()->getid0):return Sthis->batchProcessor-›gobjectType: WebhookSyncBatchPSconfigidisBatchesForObjectTypeCessor: :OBJECT_TYPE_CONTACT,& Lukas Kovalkpublic function inportContactBatchByIds(array Scraids): arraySresult = C"success_count' * 0,"falled_1ds' »> [1.'errors' »> 0),1f ( Sthis->client instanceof HubspotClientInterface) <throu new InvalidArgumentException(m*Client aust inplenent HubspotClientirSfields = Sthis->getContactFieldsO:SallContacts • [):foreach (array_chunk(screlos,lengch self::BATCH_SIZE) as Schunk) ‹try 1Scontacts • Sthis-›client->getContactsByIds(Schunk, $fields):foreach (Scontacts as ScontactData) 4SallContacts[] = Spaatartnat.490491492) catch (\ThroThere was 1 PHPUnit test runner warningLJiminny/Services1Crml/Hubspor|Service Traоарр › aрp › Services › Crm › Hubspot › ServiceTraits › () SyncCrmÊntibes Trait php > (D SyncCrm00:45:54a 8.Mon 20 Apr 16:47TRenooneicoooENTITY_TYPELOPFO+0 .FetcasalestercetotatSalesforce bulk syncs use batch processing (Redis PrecessSalesfercelstityßatchJob )Single record syncs remain unchangedOcher providers (HubSpot, etc.) remaln unchanged (stll one-by-one)@SyncOpportunitiesJob.php#L58 Do we have batches here forHưoncon mio sathonMRead SyncOpportunities.Job.phpLet me check the syncOpportunities implementation for both providers:Answer: Batching in syncOpportunities()XNOfergach (SsfOppertunities asy(ssfoppartunity)s>HubSipot (lines 66-80)0 phoforeach (SsyncStrategy-fetchOpportunities(..*) as ShsOpportuSbuffer[] = Shsopportunity:If (count(Sbuffer) ›* self::BATOHPROCESS_SIZE) < 11 800SsyncCount += Sthis-+process0pportunityßatch(Sbuffer)0401:54:46UTF-B C 4 spacesAneliya AngelovaStefka Stoyanova2 othersNikolay NikolovLukas Kovalik3:47 PM[Platform] Refinement...
|
62351
|
|
62353
|
1347
|
26
|
2026-04-21T07:51:07.633323+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757867633_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:51:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:51:26","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
8598550204786848736
|
8822320251588586102
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:51:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny …..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil Vasilev.P. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka StoyanovaR. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AMDeployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...Support Daily - in 4h 9mworkv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4Date ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:51:07v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4.68 G:MPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637.6 MBMDEC.A movid978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
62349
|
|
62344
|
1347
|
23
|
2026-04-21T07:50:54.969631+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757854969_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:06:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:06:26","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
-5565370362195302394
|
8822320251588582006
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:06:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny ..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil VasilevP. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka StoyanovaR. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AM•Deployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...workv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4ort Daily - in 4h 10 mDate ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:50:54v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4,68 GBMPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637,6 MBMPEG-4 movie978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
NULL
|
|
62345
|
1346
|
18
|
2026-04-21T07:50:55.079528+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757855079_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:06:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:06:26","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
-5565370362195302394
|
8822320251588582006
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:06:26
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpj Support Daily - in 4 h 10 mA100% C8 Tue 21 Apr 10:50:54• Refinement 2026-04-20.mp4K Meetшкas.кovank@jumunny.comSwitch accountLukas Kovalik[Platform] Refinement &Nikolay Ivanov and Steliyan Georgiev are in this callUse Gemini to take notesShare notes and transcriptStartJoin nowOther ways to join~Q MacBook Pro…..4) System Defa...•* FaceTime HD... •& Backgrounds...•))00:00:0001:54:46Gemini is available in Meet as your personal in-meeting assistant. It can analyze conversation via temporaryaccess to meeting captions. Using Ask Gemini won't create a recording or store meeting data. The meetinghost can turn it off. Learn more...
|
NULL
|
|
62354
|
1346
|
24
|
2026-04-21T07:51:09.115590+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757869115_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:55:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:55:22","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
-7581427580095228129
|
8822320251588577910
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:55:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpNikolay Nikolov (Presenting, annotating), 0j Support Daily - in 4 h 9 m100% C47Tue 21 Apr 10:51:09Refinement 2026-04-20.mp4007а 8.Mon 20 Apr 16:66QAArcountttansformer thepRetinementimportAccountBatch.php› a Poedrive~ E Salesforce0 FieidsOpportunityMatcherOpportunitySyncStrategy1230D ProspectSearchStrategy~ E ServiceTraits(© BatchSyncTralt, php 20.0428, M.30,7RecordManipulations Tralt. php 23.0© SyndFields Trait,.php 23.03.26,10.581248© Cllent. php 20.04.26, M4.36, 20.38 k8© DecorateActivity.php 23.03.26, 10.59, 201258@ DeleteObjects Tralt, php 23.03.26, 10.58.1252© FieidDefinitions.php 23.03.26, 1038, 6.81252© PayloadBulder. php 23.03.26, 10.50,2.231253© Profie.php 23.03.26, 10.59, 1.87 [EMAIL] 20.04.28, 14.10, 15.60© QueryHander.php 20.04.26, M4.11,6.28©Querykerator.php 23.03.28, 1050, 2.531© QueryResults.pho 23.03.28, 1058, 124 kService.php© SyncBatchRedhService,php 20.04.26,1© BaseCllent, php 23.03.28, 10-58, 2.19 k81262SyncContact.php3 SyncCrmÊntities Trait,php© Service.php *© SyncAccount.phpSyncProfieOpportunities.phpSyncOpportunities.Je0.phpOpportunkySyncTrait.phpclass Service extends BaseService inplenents010 4M 4202 Y3 722 21 A Vpublie function syncÖpportunities(array Sparaneters, Zstring Sstrategy • nuTU SyncHubspotObjectsTest.testHandleWithN..12631264C0SU126Sv Test Results24ms1266v 1 test passed 1 test total, 24 ms1267/opt./honebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann &Runtine:PHP 8.3.4Configuration: Lsecs/test/3ininny/app/Tine: 00:00.298, Menory: 109.50 KBforeach (Sstrategies as SsyncStrategy) ‹Snane = SsyneStrategy->getStrategyßane):Ssfopportunities = SsyncStrategy->fetch0pportunities(Sparanetere)StotalRecords = SsfOpportunities->count();foreach (SsfOpportunities as SsfOpportunity) &Sthis->InportOpportunity(SsfOpportunity):SsyncCount**;} catch (NoResultsException SnoResultsException) <// Nothing to sync.Sthis->logger-›aarning(*[* • Sthis->getDisplayNane) • '] No орр"teanid' a> Sthis->tean->getUvid,'parans" > $togParans,'reason' »> SnoResultsException->getMessage),1):} catch (CraException ScreException) ‹// Nothing to sync.Sthis->2099er->warning(*[* - Sthis->getDispLaykone . *] Opporti"teanid' => Sthis->tean->getUvido,"nane' a Snane,"parans" a> $togParans,"reason' a> ScraException->getMessage.1):127S1276There was 1 PHPUnit test runner warningWJiminny/Services/OrmlSalesforceServicоарр › aрp › Services › Crm › Salesforce › Service.php › © Service › ® « syncOpportunities00:55:06U SyncHubspotObjectsTest.testHand.SyncedAt vwooo meonoorcraisync-lead -from..BNTITY_TYPE,LEADcra: sync-epportanity -fronENTITY_TYPE_OPPORTUNTTFetchSalesforcefntities)Salesforce bulk syncs une batch processing (Redis + PrecessSalesfercetntityßatchJo• Single record syncs remalh unchangedOther providers (HubSpot, etc.) remain unchanged (still one-by-one)04 -oyncopporatcresscoepprose bo we nave batcnes hiere for huoipos nho saesrorceRead SyncOpportunities.Job.phpLet me check the syncopportunities implementation for both providers:Explored 2 files and searched function syncOpporturitiesAnswer: Batching in syncOpportunities()ProviderBatching?HubSpotA Partialmodesses es balches or ooo (barotnodosstee trmemory.X Noanities as SstOpportunity) (sthis--InpertOpportonity(SsrOpportvnlty): >HubSpot (lines 66-80)0 phoforeach (SsyncStrategy-»fetchOpportunities(...) as ShsOppertunity) (Sbutfer [] • shsOpportunity:1f (count (Sbuffer) *e selfa:BATCHLPROCESS_SIZE) € 11 500SsyncCount +a Sthis-oprocess0pportunityßatch(Sbuffer):Aneliya AngelovaStefka StoyanovaM2 othersNikolay Nikolov01:54:46UTF-8 C 4 spacesLukas Kovalik3:56 PM[Platform] Refinement...
|
NULL
|
|
61630
|
1328
|
50
|
2026-04-21T07:05:54.892496+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755154892_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:09
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"13:09","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
-2663448546430660119
|
8822039111602547316
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:09
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
System SettingsFileApril 2Q soun+EEST08:0009:0010:0511:0012:0013:0014:0015:0016:00SoundSound inputSound outputSound volumeAlerts and sound effectsMute the soundAccessibilityBackground soundsBackgroundsounds volumeFlash the screen when analert sound occursPlay sound whencommand is recognisedPlay soundsPlay sounds for keys anddwell actionsPlay system soundsSelect Background SoundTurn off backgroundsounds when your Mac isnot in useUse click key soundsHearing DevicesBluetoothBluetooth audioControl CentreShow volume in themenu barNetworkEditViewWindowHelpSoundSound EffectsAlert soundPlay sound effects throughAlert volumePlay sound on startupPlay user interface sound effectsPlay feedback when volume is changedOutput & InputOutputBoop € Osoundcore AeroClip CInputNameTyрeMacBook Pro Speakerssoundcore AeroClipDELL U3821DWBuilt-inBluetoothDisplayPortApplications may be able to access head pose information when playingspatialised audio.Output volume4 H• MuteBalanceLeftRight• Support Daily - in 4h 55 mWeek vTodaySat 25Sun 26MEMORY PRESSURE185,7 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <8Tue 21 Apr 10:05:54CPUMemoryEnergyDiskNetworkThreadsPorts З PID ,00 GB13,71 GB2,26 GB2,25 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,44 GB2,55 GB6,16 GB...
|
61628
|
|
61631
|
1329
|
42
|
2026-04-21T07:05:54.958475+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755154958_m2.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:09
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.54521275,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.55701464,"top":0.7134876,"width":0.009640957,"height":0.027134877},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.5703125,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.48919547,"top":0.72027135,"width":0.007480053,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6284907,"top":0.7198723,"width":0.005984043,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.0066489363,"height":0.015961692},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.00731383,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.61120343,"top":0.7186752,"width":0.00831117,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.59857047,"top":0.7238627,"width":0.006981383,"height":0.016759777},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.62549865,"top":0.71628094,"width":0.006482713,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.59857047,"top":0.72625697,"width":0.006981383,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7226656,"width":0.0066489363,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.00831117,"height":0.015163607},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.0063164895,"height":0.015163607},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"13:09","depth":1,"bounds":{"left":0.48919547,"top":0.74660814,"width":0.012632979,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.4898604,"top":0.74660814,"width":0.011303191,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"bounds":{"left":0.6193484,"top":0.74660814,"width":0.01512633,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.6200133,"top":0.74660814,"width":0.013796543,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.59042555,"top":0.21947326,"width":0.0033244682,"height":0.012769354},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"bounds":{"left":0.53956115,"top":0.21947326,"width":0.05086436,"height":0.012769354},"role_description":"text"}]...
|
-2663448546430660119
|
8822039111602547316
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:09
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
Cuickllme PlayercaltVIeWWindowMelpy.atlassian.net/jira/software/c/projects/JY/boards/37O JIMINNYIY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectir@ For you© Recent|# StarredX Jiminny MCP Connector - Product0+ Apps|+ (UY-20676) Notify the user if a Pan• Spaces+.*.M Jiminny MailJiminny (New)(JY-20500) Batch initial sync for S.ull Plarorm leamFeed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spacesService-Desk - Queues - Platforn— Filters_ New TabCB DashboardsC÷ OperationsI2 Confluence: Teams"= Customise sidebarISpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogII Active sprints@ Calendar• Search boardi00001Epic vType vREADY FOR DEV 7IN DEV 2Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogChange foreveexpirationCOST-EFFECTIV BIn Dev |N JY-20489… JY-9712Investigate and fix why exceedronrawesome packade limirsiMAINTENANCEReady for DevAI Review - QOKey PointsGROWTH - MAINIn Devl JY-20564|.JY-20566AI Reports > Empty page design andpromotionAJ REPORTSBacklog[ JY-20372Send emall notitication when the revort isinot generatedAJ REPORTSBacklog[ JY-201572 •000=|Notify a user before the AJ Report expiresAJ REPORTSBacklog[ JY-205081 ..00=@Svnc obbortunities without a local owner(user_id is null)PLATFORM STABILITYBacklogEJY-2035212 ReportsQ Search4 Testing Board# ListE Formseg Components⅔› Development⅘> CodeD Daily 2026-04-21.mp48 A E Datad+ CreateO Security• Releases• DeploymentsE Archived work itemsE DocsPlatform Team 88# JY-12251| W JY-20566want to see how our features are tracking comparing to new models that are coming out.• Summary on Call• Action Items on Call• AA on Call• Identity participants for mono calls" JY-20567 CLONE - Summary evaluationNikolaySteliyan G..* Improve Story* Steliyan Georgiev& Galya DimitrovaQuick start development• Onen with VS CACreate branc)Nikolay Yankov3 othersLukas Kovalik9:59 AM | Daily - Platformsuppont Dally • In 4h oom100% LzTue 21 Apr 10:05:54Ask Rovo@ ShortcutsvSlack integration& Reporting CenterGroup: QueriesDEPLOY 7Prepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-20632m•ee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)+ JY-2027811• еее —Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|1@ •=CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeployedYY JY-206810.5 ? •edTssue with reconnectina 7oholSUPPORT TICKETSDeployedX* JY-20692Toch Navl Tmnrove Nenendahot Rot 8ClosedIEJY-20696Les Mills activity types not pulling in...
|
NULL
|
|
61575
|
1328
|
20
|
2026-04-21T07:02:55.416594+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754975416_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:31
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:31","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
-3911516228584117668
|
8822039111594158710
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:31
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
QuickTime PlayerFileEditViewWindowHelpApril 2026 Week 17EESTMon 20Tue 21Chloe Cross (Parental Leave - 256 days)Ivelina Hristova (Parental Leave - 184 days)Andrea Zlatanova (Parental Leave - 189 days)08:0009:0010:02Daily - Platform 09:45Daily - Platform 09:4511:0012:0013:0014:0015:0016:00Wed 22Thu 23Daily - Platform 09:45Daily - Platform 09:45UserpilotIntroduction11:30-12:30Preparation! SupportRefinement15:00-16:00Support Daily 15:00Screen SaCOLLECTIONSBatteryPersonal collection0. Lock ScrelTouch ID &My vaultSendSupport Daily 15:00.Support Daily 15:00- E1-46976891-4697689+Week vSat 25g Daily - Platform • 3 m leftTodaySun 26Fri 24( Lauren Hudson (PTO...( Steliyan Georgiev (P…..1 Daily - Platform 09:451 Support Daily 15:00.FirefoxCP Isolated Web ContentMEMORY PRESSURE181,9 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <8Tue 21 Apr 10:02:55CPUMemoryEnergyDiskNetworkThreadsPorts PID ,00 GB13,47 GB2,49 GB2,29 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,38 GB2,84 GB6,69 GB...
|
NULL
|
|
61576
|
1329
|
17
|
2026-04-21T07:02:55.481806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754975481_m2.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:31
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.54521275,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.55701464,"top":0.7134876,"width":0.009640957,"height":0.027134877},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.5703125,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.48919547,"top":0.72027135,"width":0.007480053,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6284907,"top":0.7198723,"width":0.005984043,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.0066489363,"height":0.015961692},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.00731383,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.61120343,"top":0.7186752,"width":0.00831117,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.59857047,"top":0.7238627,"width":0.006981383,"height":0.016759777},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.62549865,"top":0.71628094,"width":0.006482713,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.59857047,"top":0.72625697,"width":0.006981383,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7226656,"width":0.0066489363,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.00831117,"height":0.015163607},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.0063164895,"height":0.015163607},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:31","depth":1,"bounds":{"left":0.48919547,"top":0.74660814,"width":0.012632979,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.4898604,"top":0.74660814,"width":0.011303191,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"bounds":{"left":0.6193484,"top":0.74660814,"width":0.01512633,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.6200133,"top":0.74660814,"width":0.013796543,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.59042555,"top":0.21947326,"width":0.0033244682,"height":0.012769354},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"bounds":{"left":0.53956115,"top":0.21947326,"width":0.05086436,"height":0.012769354},"role_description":"text"}]...
|
-3911516228584117668
|
8822039111594158710
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:31
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
Cuickllme PlayercaltWindowIY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectirX Jiminny MCP Connector - Product+ (UY-20676) Notify the user if a PanM Jiminny Mail(JY-20500) Batch initial sync for S.Feed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabService-Desk - Queues - PlatfornFITAF1 14m 22c567 8 MRVIeWMelp1y.dulasslan.nelld sortware cloro ects syoodrosoO JIMINNY@ For you© Recent|# Starred0+ Apps|• SpacesJiminny (New)ul Plarorm leamIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spaces— FiltersC DashboardsC÷ OperationsI2 Confluence: Teams"= Customise sidebar|Q SearchSpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogI Active sprints@ Calendar12 Reports4 Testing Board# ListE FormsQ Search board000018Epic vType vREADY FOR DEV 7Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogN JY-20489Investigate and fix why exceedronrawesome packade limirsiMAINTENANCEReady for Devl JY-20564|AI Reports > Empty page design andpromotionAJ REPORTSBacklog[ JY-20372Send emall notitication when the revort is.not generatedAJ REPORTSBacklog[ JY-201572 •000=|Notify a user before the AJ Report expiresAJ REPORTSBacklog[ JY-20508Svnc obbortunities without a local owner(user_id is null)PLATFORM STABILITYBacklogEJY-20352IN DEV 2Change foreveexpirationCOST-EFFECTIV BIn Dev |Platform Team 88… JY-9712# JY-19240 | W JY-18909AI Review - QOKey PointsGROWTH - MAINIn Dev• 'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list for such reports0 JY-20566ount" JY-20586 [QA) Manual Testing|. J-20702 Perlor and uss rel Saved Seare...@ Lukas K...I JY-20458 CRUD reports with Ask Jiminny9:47 AM | Daily - Platform+ Createeg Components⅔› Development% CodeO Security• ReleasesD Daily 2026-04-21.mp4Stelivan Georaiev2 Galya Dimitrova4 Open with VS Code|Dally - Platorm • 3m lemt100% LzTue 21 Apr 10:02:55Ask Rovo• DeploymentsE Archived work itemsAneliya AngelovaGalya DimitrovaE Docs@ ShortcutsvSlack integration& Reporting CenterComolete soriniGroup: QueriesNikolay Yankov3 othersDEPLOY 7Prepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-20632m•ee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)₴ JY-2027811• еее —.Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|1@ •=CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeployedYY JY-206810.5 ? •edTssue with reconnectina 7oholSUPPORT TICKETSDeployedY .IY-20692Toch Navl Tmnrove Nenendahot Rot 2ClosedIEJY-20696Les Mills activity types not pulling in...
|
61574
|
|
61642
|
1328
|
58
|
2026-04-21T07:06:26.341202+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755186341_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:40
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"13:40","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
3301530826406065162
|
8822039042866293364
|
visual_change
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
13:40
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
System SettingsFileApril 2soun+EEST08:0009:0010:0611:0012:0013:0014:0015:0016:00SoundSound inputSound outputSound volumeAlerts and sound effectsMute the soundAccessibilityBackground soundsBackgroundsounds volumeFlash the screen when analert sound occursPlay sound whencommand is recognisedPlay soundsPlay sounds for keys anddwell actionsPlay system soundsSelect Background SoundTurn off backgroundsounds when your Mac isnot in useUse click key soundsHearing DevicesBluetoothBluetooth audioControl CentreShow volume in themenu barNetworkEditViewWindowHelpSoundSound EffectsAlert soundPlay sound effects throughAlert volumePlay sound on startupPlay user interface sound effectsPlay feedback when volume is changedOutput & InputOutputNameMacBook Pro Speakerssoundcore AeroClipDELL U3821DWBoop € Osoundcore AeroClip €InputTyрeBuilt-inBluetoothDisplayPortApplications may be able to access head pose information when playingspatialised audio.Output volume4 H]•)).• MuteBalanceLeftRight• Support Daily - in 4 h 54 mWeek vTodaySat 25Sun 26• Isolated Web ContentMEMORY PRESSURE184,5 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <8Tue 21 Apr 10:06:25CPUMemoryEnergyDiskNetworkThreadsPorts PID ,00 GB13,84 GB2,11 GB2,24 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas5,01 GB2,56 GB5,71 GB...
|
61641
|
|
62346
|
1346
|
19
|
2026-04-21T07:50:56.088342+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757856088_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:21:24
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:21:24","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
3471225623575923184
|
8822038836741409398
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:21:24
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpNikolay Yankov (Presenting)• Refinement 2026-04-20.mp4j Support Daily - in 4 h 10 m100% <47Tue 21 Apr 10:50:55700nooL Pu x C 21-0 X QASKS xhttps://app.staging0 JnireyIn Font. x Com x Ea [Y-a xE3 SSH8. Ask Jiminay1 Оataоo( Manage prompts0 UUY-2 x F Prop3 Cirdedl9 dev. x@ dni x4 DemDD Tasks|La Insights & Coachin.• Dew- UHт. a3 Preserve iog0 Disable cache No throttingАЛ FeSChHR Doe• Big request. rows• Overview|Meda Mantest SocketC Croue by trame• ScreenshotsStatus200200200200l200200|8•Mon 20 Apr 15:17CJ All Bockmario© invertWoeeewawn ObmNikolay Yankovstefka Stoyanova158 ms182 ms190 msHey Nikolay,It's Jiminny here, how can I help?Picase notAnalysis wit include the most recent data wichin your chosen fiters and2 othersNikolay Nikolov200|200200|200»meet.google.com00:15:5501:54:46Lukas Kovalik3:17 PM | [Platform] Refinement...
|
62345
|
|
62347
|
1347
|
24
|
2026-04-21T07:50:56.135013+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757856135_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:21:24
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:21:24","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
3471225623575923184
|
8822038836741409398
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:21:24
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny ..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil Vasilev.P. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka Stoyanova8. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AMDeployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...workv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4ort Daily - in 4h 10 mDate ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:50:56v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4,68 GBMPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637,6 MBMDEC.A movid978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
62344
|
|
62355
|
1347
|
27
|
2026-04-21T07:51:09.157376+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757869157_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:55:58
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:55:58","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
-1471126627471709340
|
8822038768021936758
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:55:58
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny …..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil Vasilev.P. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka StoyanovaR. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AMDeployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...Support Daily - in 4h 9mworkv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4Date ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:51:09v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4.68 G:MPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637.6 MBMDEC.A movid978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
NULL
|
|
62412
|
1346
|
53
|
2026-04-21T07:52:50.421598+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757970421_m1.jpg...
|
QuickTime Player
|
Refinement 2026-02-09.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:37:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7583333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7677778,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7672222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.76555556,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7727778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.76222223,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7761111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.77111113,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:37:26","depth":1,"bounds":{"left":0.3482639,"top":0.80444443,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.80444443,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:02:30","depth":1,"bounds":{"left":0.60694444,"top":0.80444443,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.80444443,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.57430553,"top":0.08888889,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-02-09.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.08888889,"width":0.13611111,"height":0.017777778},"role_description":"text"}]...
|
-2055411662923379247
|
8821193320889592420
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:37:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4
QuickTime PlayerFileEditViewWindowHelpDOCKER• ₴1-zshО $82-zsh• ₴3Galya Dimitrova (Presenting, annotating)FigmaEditObjectArrangePluginsWidgetsProject Phoenix* Build full da...X488 Mobile Anel, 0j Support Daily - in 4h 8 m-zshscreenpipe"O 85Refinement 2026-02-09.mp4 ~-zsh₴6APP (-zsh)• 87Help8 • Mon 9 Feb 16:44• OpenAi API|D<le Story100% <7Tue 21 Apr 10:52:501881ec2-user@ip-…• 88-zsh• *9Crete trocrNikolayVankovYИИIМІLNikolay Nikolov1E///I$8•888Galya DimitrovaAneliya Angelova11meet.google.com is sharin«*),01:41:24»4 months ago02:02:30Steliyan Georg..Nikolay IvanovLukas Kov...M4:44 PM | [Platform] Refinement ®lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ U...
|
62411
|
|
62413
|
1347
|
56
|
2026-04-21T07:52:50.483803+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757970483_m2.jpg...
|
QuickTime Player
|
Refinement 2026-02-09.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:37:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:37:26","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:02:30","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.54521275,"top":1.0,"width":0.0033244682,"height":-0.06384683},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-02-09.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.065159574,"height":-0.06384683},"role_description":"text"}]...
|
-2055411662923379247
|
8821193320889592420
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:37:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4
cuickllme PlayenResults for: Al Re..cive feedhack4. Search details: Al ...= FilterdActivityLateSort: Most relevant detaultvno user will see anempty …• Link to a KB articleabout theKiosk AutomatedRebortsOwned by: Galya DimitrovaView vage•BookmarkAdded by Confluence Cloud.Screenchot 202€ 1004112Mirolay Yankovat 11:58Aplatform-inner-te...AMпо пьювия таск този линк.rcwnehautomation shouldhappen in our new AlRenorts bage- newhutton for AllGalya Dimitrova Apr 16that 11:59когато стигнеш ло това!стоnиhttne. himinny atlaccian ne+/browce /IV.20272JY-20372 Al Reports>Emoty bage desion andlStatus: BacklogType: Story@ Search: Al Reports > Empty page design andihread~nlatform-inner-team4: XGalya Dimitrova Feb 6th at 2:10 PMСторита за дефаинмьнт за понделник - започваме ла работим по следвашия фичьо за а керошя ла се ползва ли рапогата за ла сеавтоматизиоат оепооти за клиентите на оаза на спешифичните неша които ги интересуват:• https://jiminny.atlassian.net/browse/JY-18909• httos://uminnv.atlassian.net/browse/Y-19123• https://jiminny.atlassian.net/browse/JY-19669(edited)JY-18909 Automated reports with Ask JiminnyStatus: BacklogType: StoryAssignee: Unassigned' Priority. ModiumSync thread*AI SummariseJY-1y125 Allow managers to ado ano edit emalls tor a useiStatus: BacklogW Type: StoryAssignee: UnassignedT Priority: MediumSync thread*t Al SummariseAdded bv Jira GloudJY-19669 Custom Revort NameStatus: BacklogW Type: Story8) Assienee: Unassigned1 Prioritv: MediumSync thread*+Al SummariseAdded by Jira Clouc15 renliesStelivan Georgiev Feb 6th at 2.51 PMPanorama и Automated Renorts май се застьпват?Galva Dimitrova Feb 6th at 2.56 PMТе са базирани на елин и сьши поомат. Просто елното е автоматично ла получавал пезултат вместо ла холиш всяка селмица в джимини ида кликашNikolav Nikolov Feh 6th at 2.53 PMКлиентите ли ше ги съзлават тези пепорти ?тe, не от KloskDa to nише ВШе трябва да променим праватаNikolay Yankov Feb 9th at 11:58 AMпо пьовия таск този линк е счупен:• the report automation should happen in our new Al Reports page- new button for AJ Reports -https://www.figma.com/design/iXcUe1y9mx5Fiz8KosLAUn/Proiect-Phoenix?node-id=5868-38639&t=MP86F32UkZdLY5t5-1|и в това строи сьщо е счупен підта линкаhttps://wminnv.atlassian.net/browse/lY-10241lJY-19241 Show the AJ Reports in JiminnyStatus: BackloeA Tvne: Story•Assienee: Unassiened1 Prioritv: MediumAssignChange status*Al SummariseAddod hu tira GloudFavourites• jiminny(®) AirDrop© RecentsA Applications|9 Documents• Downloadsii lukasiCloud• iCloud Drive992 Svnc toldeLocations0 DXP4800PLUS-B5F A49 Network• CRM• Orange• Red• Yellow• Greer• Purple•) All lags..suppont Dally • In 41 81work- Refinement 2026-03-30.mp4* Dally 2026-03-30.mp4- Daily 2026-03-27.mp4- Dally 2026-03-24.mp4_ Refinement 2026-03-23.mp4- Daily 2026-03-23.mp4** BE chapter 2026-03-20.mp4• Dallv 2026-03-20,m04am Planing 2026-03-18-converted.mp4Refinement 2026-02-09-converted.mp4KA Dally 2026-03-19.mp4• Review 2026-03-18.mn4am Planing 2026-03-18.mp4Ketro 2020-03-1/.mp4• Dailv 2026-03-17 mo4•: Refinement 2026-03-16.mp4• Daily 2026-03-16.mp4иA Dallv 2026-03-13.mp4r 1-1 2026-03-12 mn4an. Daily 2026-03-11.mp4• Dailv 2026-03-10.mo4xe: Refinement 2026-03-09.mp4Daily 2026-03-09.mp4ru Dailv 2026-03-06.mp4a Planning 2026-03-04.mp4** Dally 2020-02-2/.m04Dailv 2026-02-26.movDaily 2026-02-25.movin Opportunity-Contacts 2026-02-24.mp4•a Dailv 2026-02-24,mo4M Dofinamant 2026.02.22 mлlв Daily 2026-02-20 8 Ani.mo4_ Daily 2026-02-19.mp4ka Review 2026-02-18.mo4es Plannina 2026-02-18 mp4• Retro 2026-02-17.mp4= Refinement & P1 debuagina 2026-02-16.mp4•* SyncObjects3 2026-02-16.mp4*= SyncObjects2 2026-02-16.mp4• SyncObiects1 2026-02-16.mp4= Daily 2026-02-16 mn/Daily 2026-02-13.mр4Al chapter 2026-02-11.mp4…* Allhands 2026-02-11.mo4el CaeeA.11 mл/• Refineent 2026-02-09.mo4naily 2026.02.00 mm/* Daily 2026-02-05.mp41a Review 2026-02-04 mn/lE Plannina 2026-02-04.mp4000 vDate Modified30 Mar 2026 at 17:1230 Mar 2026 at 10:0527 Mar 2026 at 10:0924 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0610 Mar 2026 at 12:0119 Mar 2026 at g:o/18 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1816 Mar 2026 at 16:551s Mar 2026 at 10.1212 Mar 2026 at 18:2512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 9:579 Mar 2026 at 17:046 Mar 2026 at 9:57A Mar 2026 at 11:092 Mar 2026 at 10:0727 Feb 2026 at 10:0226 Feb 2026 at 9:5325 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feb 2026 at 10:02h2 Coh 2006 at 16:2120 Feb 2026 at 10:5319 Feb 2026 at 9:5418 Feb 2026 at 16:2518 Feb 2026 at 10:5717 Feb 2026 at 17:3816 Feb 2026 at 17:36MG CAH 2006 A+ 15:1016 Feb 2026 at 11:2916 Coh 2026 at 10:11113 Feb 2026 at 10:1111 Feb 2026 at 17:3411 Feb 2026 at 11:464 Goh 2anG dt 40.029 Feb 2026 at 17:05Boh 2006 at 10:026 Feb 2026 at 9:595 Feb 2026 at 9:57A Feh 2026 at 16:20.ah 4.92 Eah 202A at 17:50lue Z1 Ao 10:02:002,77 GB641,8 MB88A2MRMPEG-4 movieMDEG-A movie476,6 MB000,8 Mb3.44 GBMPEG-4 movieMPEG-4 movie438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie430,4 M:MPEG-4 movie2,38 GBMDSG-A movie2,26 GB386,3 MBMPEG-4 movie705.8 MEMPEG.A movid2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie1.2 GEMPEG-4 movie4,19 GB592,2 MB1.02 G.MDEG.A movidMP-G-4 movie637 6 MP978,7 MB798,7 MB404.6 MEMPEG-A movieMPEG-4 movieMPEG-4 movieMPEG-4 movie4,16 GB319,7 MB291.7 MBMDEeA movitMPEG-4 movie2 62 GPMDEG-A movie768,5 MBMPEG-4 movie040,0 MbMPEG-4 movie96.6 MB QT movie503,5 MB QT movie791,7 MB520,7 MBMPEG-4 movienepAT movio2,52 GB234,2 MBMPEG-4 movie925.1 MBMPEG-4 movie2.04 GB MPEG-4 movie1,31 GB4.53 G:MPEG-4 movie140Cp1,04 GB548.1 MEMDECA mAvidMPEG-4 movieMPEG-4 movie7217 MPMDEG-A movid796.1 MB MPEG-4 movie1,21 GBMPEG-4 movie1.71 GEMPEG-4 movieG02 MP MDCCA movid3.44 G:MPEG-4 movie276 9 MRMDEG.A movio459.3 MB MPEG-4 movie325,1 MB653 0 MRMDEG-A movidAEGEP MDEC A movid1 ARAR MDEC_A mAvio...
|
62410
|
|
61650
|
1328
|
62
|
2026-04-21T07:06:48.001719+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755208001_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
14:01
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:01","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
8312365606040527545
|
8820913211678927478
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
14:01
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
System SettingsFileApril 2soun+EEST08:0009:0010:0611:0012:0013:0014:0015:0016:00SoundSound inputSound outputSound volumeAlerts and sound effectsMute the soundAccessibilityBackground soundsBackgroundsounds volumeFlash the screen when analert sound occursPlay sound whencommand is recognisedPlay soundsPlay sounds for keys anddwell actionsPlay system soundsSelect Background SoundTurn off backgroundsounds when your Mac isnot in useUse click key soundsHearing DevicesBluetoothBluetooth audioControl CentreShow volume in themenu barNetworkEditViewWindowHelpSoundSound EffectsAlert soundPlay sound effects throughAlert volumePlay sound on startupPlay user interface sound effectsPlay feedback when volume is changedOutput & InputOutputNameMacBook Pro Speakerssoundcore AeroClipDELL U3821DWBoop € Osoundcore AeroClip €InputTyрeBuilt-inBluetoothDisplayPortApplications may be able to access head pose information when playingspatialised audio.Output volume4 H• MuteBalanceLeftRight• Support Daily - in 4 h 54 mWeek vTodaySat 25Sun 26• Isolated Web ContentMEMORY PRESSURE184,7 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <8Tue 21 Apr 10:06:47CPUMemoryEnergyDiskNetworkThreadsPorts PID ,00 GB13,86 GB2,11 GB2,24 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,94 GB2,52 GB5,84 GB...
|
61649
|
|
61651
|
1329
|
50
|
2026-04-21T07:06:48.001838+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776755208001_m2.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
14:01
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.54521275,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.55701464,"top":0.7134876,"width":0.009640957,"height":0.027134877},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.5703125,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.48919547,"top":0.72027135,"width":0.007480053,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6284907,"top":0.7198723,"width":0.005984043,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.0066489363,"height":0.015961692},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.00731383,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.61120343,"top":0.7186752,"width":0.00831117,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.59857047,"top":0.7238627,"width":0.006981383,"height":0.016759777},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.62549865,"top":0.71628094,"width":0.006482713,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.59857047,"top":0.72625697,"width":0.006981383,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7226656,"width":0.0066489363,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.00831117,"height":0.015163607},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.0063164895,"height":0.015163607},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:01","depth":1,"bounds":{"left":0.48919547,"top":0.74660814,"width":0.012632979,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.4898604,"top":0.74660814,"width":0.011303191,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"bounds":{"left":0.6193484,"top":0.74660814,"width":0.01512633,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.6200133,"top":0.74660814,"width":0.013796543,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.59042555,"top":0.21947326,"width":0.0033244682,"height":0.012769354},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"bounds":{"left":0.53956115,"top":0.21947326,"width":0.05086436,"height":0.012769354},"role_description":"text"}]...
|
8312365606040527545
|
8820913211678927478
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
14:01
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
Cuickllme PlayercaltVIeWWindowMelpy.atlassian.net/jira/software/c/projects/JY/boards/37O JIMINNYIY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectin@ For you© Recent|# StarredX Jiminny MCP Connector - Product0+ Apps|+ (UY-20676) Notify the user if a PanQ Spaces+.*.M Jiminny MailJiminny (New)(JY-20500) Batch initial sync for S.ull Plarorm leamFeed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spacesService-Desk - Queues - Platforn— Filters_ New TabCB DashboardsC÷ OperationsI2 Confluence: Teams"= Customise sidebarIQ SearchSpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogII Active sprints@ Calendar12 Reports* Testina Boardi# List• Search boardi00081Epic vType vREADY FOR DEV 7IN DEV 2Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogChange foreveexpirationCOST-EFFECTIVEIn Dev |Platform Team 88N JY-20489… JY-9712Q Search board800018 Epic vInvestigate and fix why exceedronrawesome packade limirsMAINTENANCEReady for DevAI Review - QOKey PointsGROWTH - MAINIn DevIN DEY 2l JY-20564|.JY-20566Backog35 /2 ..=45 1 •••=AI Reports > Empty page design andpromotionAJ REPORTSBacklog[ JY-203721381eSend emall notitication when the revort isinot generatedAJ REPORTSBacklog[ JY-201572 •000=|Notify a user before the AJ Report expiresAJ REPORTSBacklog[ JY-205081 ..00=@10:00 AM | Daily - PlatformSvnc obbortunities without a local owner(user_id is null)PLATFORM STABILITYBacklogEJY-20352E Formse Components+ Create⅔› Development% Code• Security• Releases• DeploymentsD Daily 2026-04-21.mp4E Archived work itemsE DocsOA 21In QAlAI BE (FE) QA51 •=PO ACCEPTANCENikolay IvanoNikolay Yankov3 othersSteliyan GeorgievII »Lukas Kovalik"suppont Dally • In 4n 04m100% LzTue 21 Apr 10:06:47Ask Rovo@ ShortcutsvSlack integration& Reporting CenterGroup: QueriesDEPLOY 7Prepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-20632m•ee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)+ JY-2027811• еее —Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|1@ •=CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeployedYY JY-206810.5 ? •edTssue with reconnectina 7oholSUPPORT TICKETSDeployedX* JY-20692Toch Navl Tmnrove Nenendahot Rot 8ClosedIEJY-20696Les Mills activity types not pulling in...
|
NULL
|
|
19589
|
417
|
26
|
2026-04-15T07:47:24.560894+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776239244560_m1.jpg...
|
Firefox
|
Sign in - Google Accounts — Work
|
1
|
accounts.google.com/signin/oauth/id?authuser=0& accounts.google.com/signin/oauth/id?authuser=0&part=AJi8hAP5LJ222Y8m00ReDCekxogvCezPp6rRgXadImJTRvDpSEUlmJ146rAjyyb2UkNMe1if1E0Mt4nIPPvjkZou75RVpvpvFwBUrqFnvXLyDGgcH2ILsKApCIUT--8dLiwo8uV8677YR9-zEa8p4zm7ybg8by23w7Diuizf2SzhsIpfjEby734A2Wmytq64D8Agdb3ivDrQJPK6YNwD54ZFqHeu1gxXMICSPWBrCqPfCS3R6TdBXyaE5fk9nczR4TMcx7OU93kTM1Jgy1tG5AeWxadpFJqVlMOsRjQn1OcTsGM3xUJOtF6vvIlBKkxFG7pZuqGMZndXbdG8IkD2TCv-5f-bmIHhFbCod0RtIwdDGm8JA20WKmbWsctM_det5xq75iKxVfEZEwj5W09t_WhvHiDqLPofbzHTCHoVpAZ98lU0h8gCfZepBukaCLiVi9Ne041EvBLkfEPGxU-SekRTcm7afDQdlH-Me20fSslOufSI-DN855BZCYZmZaLbTpNfIZKbgudNLrxyUP6B3yy-uLUs5i35hqvExPlnpjz7KPc8KuEze-W7cxWS-AeSmRwb3rPdzKirMmWaE9DNsrBiSVjVZ3KArtI7ZcobrFjhNTt0sfhKYka7pZMt9qG9eqjc6gXSgzpTMQ4SlIquCmapHdJyM9A_lIKSqA6sZoF9bCx2xBAmqXwVRtpX4icqiAqbw-KMblYPJSInySh-ASIoWdbg0N-VROu3d_x7pPejX69AJGoQ7rlc_-f3RbDAkTkYuFnlkERveDNmtIn4aeJEOcZsVaZtQnHJymoyyMIEaIYRjaikzA_lzrNDSPeRBlHdGBacM58KTT8Bx3KjnYzmvZj_ETNe1ti1PC3reSJvV_gJKGUAqHA9KHt3g0J8okucOF7fn2nbOqhb4xPHjJ2LTqA9edzz4Lh2XWPXD3nNi0z7VCnmeWBNA5zqYV-Ib8vUkXJCfArfQExDeKTNWpdy_av-tgJTVkjIpnwtLNJt5q7fTECygHU&flowName=GeneralOAuthFlow&as=S2117172885%3A1776239240925185&client_id=690752614462-i765709385cocut1thvutg8aml4l0ss8.apps.googleusercontent.com&rapt=AEjHL4PSWlqdnQvgK5jSeTmEk_eB6RnGl8vJmIG2RJiC-mj18svMFWvXnv2T8TOHcXHGsaY_Pgh2r0_L27SvpQ2YW2KEW8nEzubvedmkw1Ne4_N5LaIkvxw#...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
Sign in - Google Accounts
Sign in - Google Accounts
Close tab
Vanta
Vanta
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in with Google
You’re signing back in to Vanta
You’re signing back in to Vanta
[EMAIL] selected. Switch account
[EMAIL]
Review Vanta’s
Privacy Policy
Privacy Policy
and Terms of Service to understand how Vanta will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Sign in with Google
Sign in with Google
.
Cancel
Cancel
Continue
Continue
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","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":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,550) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sign in - Google Accounts","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign in - Google Accounts","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":"Vanta","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vanta","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · 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,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Google","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You’re signing back in to Vanta","depth":10,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’re signing back in to Vanta","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"lukas.kovalik@jiminny.com selected. Switch account","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review Vanta’s","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service to understand how Vanta will process and protect your data.","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To make changes at any time, go to your","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Google Account","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google Account","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign in with Google","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Google","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cancel","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cancel","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Continue","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Continue","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United States)","depth":10,"value":"English (United States)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United States)","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7392293955939301301
|
8819565230940865535
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
Sign in - Google Accounts
Sign in - Google Accounts
Close tab
Vanta
Vanta
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in with Google
You’re signing back in to Vanta
You’re signing back in to Vanta
[EMAIL] selected. Switch account
[EMAIL]
Review Vanta’s
Privacy Policy
Privacy Policy
and Terms of Service to understand how Vanta will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Sign in with Google
Sign in with Google
.
Cancel
Cancel
Continue
Continue
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
19587
|
|
19590
|
418
|
22
|
2026-04-15T07:47:24.540822+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776239244540_m2.jpg...
|
Firefox
|
Sign in - Google Accounts — Work
|
1
|
accounts.google.com/signin/oauth/id?authuser=0& accounts.google.com/signin/oauth/id?authuser=0&part=AJi8hAP5LJ222Y8m00ReDCekxogvCezPp6rRgXadImJTRvDpSEUlmJ146rAjyyb2UkNMe1if1E0Mt4nIPPvjkZou75RVpvpvFwBUrqFnvXLyDGgcH2ILsKApCIUT--8dLiwo8uV8677YR9-zEa8p4zm7ybg8by23w7Diuizf2SzhsIpfjEby734A2Wmytq64D8Agdb3ivDrQJPK6YNwD54ZFqHeu1gxXMICSPWBrCqPfCS3R6TdBXyaE5fk9nczR4TMcx7OU93kTM1Jgy1tG5AeWxadpFJqVlMOsRjQn1OcTsGM3xUJOtF6vvIlBKkxFG7pZuqGMZndXbdG8IkD2TCv-5f-bmIHhFbCod0RtIwdDGm8JA20WKmbWsctM_det5xq75iKxVfEZEwj5W09t_WhvHiDqLPofbzHTCHoVpAZ98lU0h8gCfZepBukaCLiVi9Ne041EvBLkfEPGxU-SekRTcm7afDQdlH-Me20fSslOufSI-DN855BZCYZmZaLbTpNfIZKbgudNLrxyUP6B3yy-uLUs5i35hqvExPlnpjz7KPc8KuEze-W7cxWS-AeSmRwb3rPdzKirMmWaE9DNsrBiSVjVZ3KArtI7ZcobrFjhNTt0sfhKYka7pZMt9qG9eqjc6gXSgzpTMQ4SlIquCmapHdJyM9A_lIKSqA6sZoF9bCx2xBAmqXwVRtpX4icqiAqbw-KMblYPJSInySh-ASIoWdbg0N-VROu3d_x7pPejX69AJGoQ7rlc_-f3RbDAkTkYuFnlkERveDNmtIn4aeJEOcZsVaZtQnHJymoyyMIEaIYRjaikzA_lzrNDSPeRBlHdGBacM58KTT8Bx3KjnYzmvZj_ETNe1ti1PC3reSJvV_gJKGUAqHA9KHt3g0J8okucOF7fn2nbOqhb4xPHjJ2LTqA9edzz4Lh2XWPXD3nNi0z7VCnmeWBNA5zqYV-Ib8vUkXJCfArfQExDeKTNWpdy_av-tgJTVkjIpnwtLNJt5q7fTECygHU&flowName=GeneralOAuthFlow&as=S2117172885%3A1776239240925185&client_id=690752614462-i765709385cocut1thvutg8aml4l0ss8.apps.googleusercontent.com&rapt=AEjHL4PSWlqdnQvgK5jSeTmEk_eB6RnGl8vJmIG2RJiC-mj18svMFWvXnv2T8TOHcXHGsaY_Pgh2r0_L27SvpQ2YW2KEW8nEzubvedmkw1Ne4_N5LaIkvxw#...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
Sign in - Google Accounts
Sign in - Google Accounts
Close tab
Vanta
Vanta
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in with Google
You’re signing back in to Vanta
You’re signing back in to Vanta
[EMAIL] selected. Switch account
[EMAIL]
Review Vanta’s
Privacy Policy
Privacy Policy
and Terms of Service to understand how Vanta will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Sign in with Google
Sign in with Google
.
Cancel
Cancel
Continue
Continue
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","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.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,550) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Sign in - Google Accounts","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Sign in - Google Accounts","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.053125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.11736111,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Vanta","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vanta","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.01171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.31180555,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Google","depth":11,"bounds":{"left":0.36289063,"top":0.36666667,"width":0.04921875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You’re signing back in to Vanta","depth":10,"bounds":{"left":0.3582031,"top":0.4625,"width":0.1796875,"height":0.072222225},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You’re signing back in to Vanta","depth":11,"bounds":{"left":0.3582031,"top":0.4611111,"width":0.16757813,"height":0.075},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"lukas.kovalik@jiminny.com selected. Switch account","depth":11,"bounds":{"left":0.3582031,"top":0.54583335,"width":0.09453125,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":13,"bounds":{"left":0.37226564,"top":0.55,"width":0.0671875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review Vanta’s","depth":13,"bounds":{"left":0.5566406,"top":0.42916667,"width":0.0375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":13,"bounds":{"left":0.59414065,"top":0.42916667,"width":0.037109375,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":14,"bounds":{"left":0.59414065,"top":0.42916667,"width":0.037109375,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service to understand how Vanta will process and protect your data.","depth":13,"bounds":{"left":0.5566406,"top":0.42916667,"width":0.17578125,"height":0.027083334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To make changes at any time, go to your","depth":13,"bounds":{"left":0.5566406,"top":0.4652778,"width":0.10117187,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Google Account","depth":13,"bounds":{"left":0.6578125,"top":0.4652778,"width":0.042578124,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google Account","depth":14,"bounds":{"left":0.6578125,"top":0.4652778,"width":0.042578124,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"bounds":{"left":0.70039064,"top":0.4652778,"width":0.001171875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":13,"bounds":{"left":0.5566406,"top":0.4875,"width":0.0453125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign in with Google","depth":13,"bounds":{"left":0.60195315,"top":0.4875,"width":0.0515625,"height":0.013194445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Google","depth":14,"bounds":{"left":0.60195315,"top":0.4875,"width":0.0515625,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"bounds":{"left":0.65351564,"top":0.4875,"width":0.001171875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cancel","depth":10,"bounds":{"left":0.5566406,"top":0.59444445,"width":0.0875,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cancel","depth":11,"bounds":{"left":0.5914062,"top":0.6013889,"width":0.017578125,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Continue","depth":10,"bounds":{"left":0.64882815,"top":0.59444445,"width":0.0875,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXStaticText","text":"Continue","depth":11,"bounds":{"left":0.6808594,"top":0.6013889,"width":0.023046875,"height":0.013194445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United States)","depth":10,"bounds":{"left":0.34414062,"top":0.65833336,"width":0.072265625,"height":0.022222223},"value":"English (United States)","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United States)","depth":12,"bounds":{"left":0.3503906,"top":0.6638889,"width":0.048828125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"bounds":{"left":0.67578125,"top":0.6527778,"width":0.019140625,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"bounds":{"left":0.68046874,"top":0.6638889,"width":0.009765625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"bounds":{"left":0.69804686,"top":0.6527778,"width":0.025,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"bounds":{"left":0.70273435,"top":0.6638889,"width":0.015625,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"bounds":{"left":0.72617185,"top":0.6527778,"width":0.02265625,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"bounds":{"left":0.7308594,"top":0.6638889,"width":0.01328125,"height":0.011111111},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7392293955939301301
|
8819565230940865535
|
click
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
Sign in - Google Accounts
Sign in - Google Accounts
Close tab
Vanta
Vanta
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign in with Google
You’re signing back in to Vanta
You’re signing back in to Vanta
[EMAIL] selected. Switch account
[EMAIL]
Review Vanta’s
Privacy Policy
Privacy Policy
and Terms of Service to understand how Vanta will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Sign in with Google
Sign in with Google
.
Cancel
Cancel
Continue
Continue
English (United States)
English (United States)
Help
Help
Privacy
Privacy
Terms
Terms...
|
NULL
|
|
62451
|
1348
|
17
|
2026-04-21T07:54:08.861831+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776758048861_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-06.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:11:00
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7583333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7677778,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7672222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.76555556,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7727778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.76222223,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7761111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.77111113,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:11:00","depth":1,"bounds":{"left":0.3482639,"top":0.80444443,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.80444443,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:18:48","depth":1,"bounds":{"left":0.60694444,"top":0.80444443,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.80444443,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.57430553,"top":0.08888889,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-06.mp4","depth":1,"bounds":{"left":0.4375,"top":0.08888889,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
4493777170748391705
|
8817816962239048308
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:11:00
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4
QuickTime PlayerFileEditViewWindowHelpDOCKERO $1-zsh-О $82-zsh• *3, 0j Support Daily - in 4 h 6 m-zsh* Build full da...X4screenpipe"О ₴5Refinement 2026-04-06.mp4 v-zsh86APP (-zsh)• 87tuY-200100% <7ec2-user@ip-…88Tue 21 Apr 10:54:08L881-zsh• *9M inbor3 JMNNY@ For you© RecentЯ Started8? Apps02 Spaces(9) Service-DeskSminny (0id)Jminny (New)+ ***10D Platform TeamID Capture TeamEnterprise Stability I...Processing TeamŒID SE Kanban= More spacesE FitersCB Dashboards€ OperationsE Confiuence22 Teams$, Customise sidebarProiect i XFor font• Asd yarC J-180[URL_WITH_CREDENTIALS] ~/.screenpipe $ D38:...
|
NULL
|
|
62452
|
1349
|
16
|
2026-04-21T07:54:08.861845+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776758048861_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-06.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:11:00
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:11:00","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:18:48","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.54521275,"top":1.0,"width":0.0033244682,"height":-0.06384683},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-06.mp4","depth":1,"bounds":{"left":0.47972074,"top":1.0,"width":0.06549202,"height":-0.06384683},"role_description":"text"}]...
|
4493777170748391705
|
8817816962239048308
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:11:00
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4
cuickllme PlayenResults for: Al Re..4. Search details: Al...cive feedhack= FilterdSort: Most relevant detaultvActivityLateMoreAdded by Confluence CloudScreenshot 202..Shared by Galya Di.0 10$ 48442Nikolay YankovFeb 9thпо пьовия таск този линиautomation shouldhappen in our new AllRevorts page- newbutton for AJGalva Dimitrovaкогато стигнеш ло товаhttps://uminnv.atlassian.net/browse/JY-20372Y.20279 Al Ronarte>Empty page design andpromoulonStatus: BacklogTvoe: StoryAssignee: Nikolay Yankov1 Prioritv: MediumAssignChange statusAl SummariseAdded bv lira GloudGalttoin inrer..at 2:10@ Search: Al Reports > Empty page design and• platrorm-inner-teamMessagest Channel OverviewRehnementsr Files1 Pinse BookmarksFriday. April 3rdvChanges.•Handle race condinon when.Show moreCommentsjiminny/app| Apr 1st| Added by GitHubGalva Dimitrova 12:37 PMIсторита за рефайнмьнт:[URL_WITH_CREDENTIALS] 10• Retro Action ItemsDeleted file:XFavourites• jiminny(®) AirDrop© Recents* Applications|9 Documents• Downloadsii lukasiCloud• iCloud Drive992 Svnc toldeLocations0 DXP4800PLUS-B5F A49 Network• CRMI• Orange• Red• YellowGreen• Purple• All Tags..Support Daily - in 4h 6nworkDally 2020-04-10.mp4- Plannina 2026-04-15.mo4Retro 2026-04-14.mp4Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4=Daily 2026-04-09.mp4w: Daily 2026-04-08.mp4• Daily 2026-04-07.mp4* Refinement 2026-04-06.mp4= Daily 2026-04-03.mp4ax Plannina 2026-04-01 & task solit.mo4a Retro 2026-03-31.mp4Daily 2026-03-31.mp4_ Retinerment 2026-03-30.mp4a Daily 2026-02-20 mn/• Daily 2026-03-26.mp4• Dailv 2026-03-24 moL• Refinement 2026-03-23.mp4- Daily 2026-03-23.mp4-2 BE chapter 2026-03-20.mo4M nail 2026.02.20 mn/lning 2026-03-18-converted.mp4• Refinement 2026-02-09-converted.mp4RR Daily 2026-02-10 mn/• Review 2026-03-18.mp4am Planing 2026-03-18.mp4F Retro 2026-03-17 mo4= Daily 2026-03-17.mp4Refinement 2026-03-16.mp4- Daily 2026-03-16.mp45 Daily 2026-02-12 mn/нa 1-1 2026-03-12.mpLDally 2020-03-12.mp4na Dailv 2026-03-11.mo4Bnaily 2026.02.10 mл/*: Refinement 2026-03-09.mp4# Daily 2026-03-09.mp4Fu Daily 2026-02-06 mn/ae: Plannina 2026-03-04 mр4• Daily 2026-03-02.mp4* Dallv 2026-02-27 mo4Daily 2026-02-26.movDaily 2026-02-25.movIun Opportunitv-Contacts 2026-02-24 mр4w Daily 2026.02.21 mn/P Refient 2026-02-23.mov• Daily 2026-02-20 & Ani.mp4= Daily 2026-02-19 mn/HDouiou 2026..02.10 mл/wл Planning 2026-02-18.mp4mu Retro 2026-02-17 mo4• Refinement & P1 debugging 2026-02-16.mp4•• SyncObjects3 2026-02-16.mp4we SvncObiects2 2026-02-16.m4Date Modified16 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Aor 2026 at 14:479 Apr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:081 Aor 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1030 Mar 2026 at 17:1220 MAr 2006 A+ 10:0 577 Mar 2026 at 10:0926 Mar 2026 at 0:5024 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2006 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3510 Mar 2026 at 0:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0212 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 0:574 Mar 2026 at 11:092 Mar 2026 at 10:0777 Seb 2026 at 10:07oe coh nand ot 0-5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feb 2026 at 10:0223 Feb 2026 at 16:3120 Feb 2026 at 10:5319 Feh 2026 at 9:5440 coh 2anG dt 16.0g17 Feb 2026 at 17:3816 Coh 2026 at 17:2616 Feb 2026 at 15:1016 Feb 2026 at 11:58Tue 21 Apr 10:54:08513,4 MB2.75 GE1,44 GBMPEG-4 movieMPEG-4 movieMPEG-4 movie924,4 MB362.6 MB748,8 MB MPEG-4 movie1,04 GBMPEG-4 movie575,5 MEMPEG-4 movie4.34 GRMPEG-4 movie720,5 M8MPEG-4 movie1,02 GBMPEG-4 movie4.68 G:MPEG-4 movie3,4 GB MPEG-4 movie923,6 MBMPEG-4 movie2.77 GBMPEG-4 movieSARMRMDSG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3.44 GBMPEG-4 movie438,9 MB1.68 G:MPEG-4 movieA20AMRMDSG.A movic2,38 GBMPEG-4 movie2,26 GBMPEG-4 movie286 2 MRMDEG-A movie705.8 MB MPEG-4 movie2,78 CBMPEG-4 movie1.53 G:MPEG-4 movie12 epMDEC.A movid4,19 GBMPEG-4 movie592,2 MBMPEG-4 movie102 GPMDEG-A movie637.6 MB MPEG-4 movie978,7 MB798.7 M.MPEG-4 movieAOAGMPMDEC.A movid4,16 GBMPEG-4 movie319,7 MEMPEG-4 movie201.7 MPMDSG-A movid2,62 GB MPEG-4 movie768,5 MBMPEG-4 movie546.8 M:MPEG-A movie96,6 MB QT movie503,5 MBQT movie791,7 MBMPEG-4 movie520,7 MBMPEG-4 movie2 GB QT movie2,52 GBMPEG-4 movie2342 MBMPEG-A movie925.1 MB MPEG-4 movie2,04 GB13" G:MPEG-4 movieA62 ep MDEG.A movid1.42 GR MPEG-4 movie1.04 GB MPEG-4 movie...
|
62450
|
|
62349
|
1347
|
25
|
2026-04-21T07:50:57.303269+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757857303_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:45:54
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:45:54","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
5269603850449488978
|
8816690752188582518
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:45:54
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny ..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil Vasilev.P. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka Stoyanova8. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AMDeployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...workv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4ort Daily - in 4h 10 mDate ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:50:57v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4,68 GBMPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637,6 MBMDEC.A movid978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
NULL
|
|
62350
|
1346
|
21
|
2026-04-21T07:50:57.531975+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757857531_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:45:54
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:45:54","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
5269603850449488978
|
8816690752188582518
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:45:54
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpNikolay Nikolov (Presenting, annotating)• Refinement 2026-04-20.mp4j Support Daily - in 4 h 10 m100% CTue 21 Apr 10:50:57007AArcountttansformer thopRetinement)t Uisteners© Service.php› Do Metadata› Eo Migration› D Pipedrtve* D Salesforce1446› 0Fieids› DD OpportunityMatcher› @ OpportunitySyncStrategyProspectSearchStrategy1451 €Service Traits© Cllent.php 20.04.38, M.36, 20.38 k81453©DecorateActivity.php 23.03.20, 1050. :1454® DeleteObjectsTrakt. php 23.03.26, 10.3© FieldDefnitions. php 23.03.28, 30.59, 6© PayloadBullder.php 23.03.28, 10:39,22© Profie.php 23.03.28, 1058, 1.97 [EMAIL] 20.04.28, 14.16, 15.88© QueryHandler.php 20.04.28, M.16,8.21©Queryterator.php 23.93.26, 1039, 2.32©QueryResults.php 23.03.26, 10.38, 1,24Service.php© SyncBatchRedisService.php 2004.26© BaseCllent.php 23.03.28, 10.59, 2.10 kвSyncAccount.php© SyncProfie Opelass Service extends BaseService iaplementspeivate function inportOpportunity(ScraOata): ?0pportunityFELN INEE,146S1400RunU SyncHubspotObjectsTest.testHandleWithN.1467C0S814681469v Test Resuits24 ms1470v 1 test passed 1 test total, 24 mm147/opt./homebrew/Cellar/php/8.3.4/bin/phpTestáng started at 11:54 ...1473PHPUnit 11.5.55 by Sebastian Bergnann &Runtine:PHP 8.3.4Configuration: Lsecs/test/31ainny/applTine: 00:00.298, Menory: 109.50 KB1478es Graham +5public function syncContacts(Carbon Saince, ?Carbon Sto & nutl): intSsyncCount • 0:Sfields • Sthis->getALlFieldsAsArray( objectTypelif (in_array (neede: "Id", Sfields,true) was false) (return SsyncCount;Squery =• rtrin(iaplode( sepaFRON ContactBHERE LastModifiedDate > :sinceORDER BY LastModifiedDate ASC*:". Sfields),characters: ",')try 4SsfContacts = Sthis->queryHandler->query(Squery, t'since' a> Ssince->format( format:1):foreach (SsfContacts as SsfContact) </l Only syne if previousty Saported.1f (Sthis-)hasContact(SsfContact[^Id'])) €Sthis->iaportContact(SsfContact);SsyncCount**;} catch (NoResultsException SnoResuttsException) <1/ Nothing to sync.There was 1 PHPUnit test runner warningLuminny/Services/OrmlSalesforceоaрр › aрp › Services › Crm › Salesforce › Service,php › © Service › © « syncContactsServicmeet google.00:41:51SyrchtbiootoolecthestesthSynccontacupngOpportunitySyncTrait.phpON 4M 622 Y3222 21 4а 8.Mon 20 Apr 16:43Cascadeimplementabon lor boan provioers:Answer: Batching in syncOpportunsties()Aneliya AngelovaStefka StoyanovaX No2 othersNikolay NikolovHubSpot (ines 66-80)O phpforeach (SsyncStrategy-»fetchopporSbutferl] • shsopportunity:if (count (Sbuffer) ye selfe:mSsyncCount +a Sthis-opreceBuffers 800 opportunities beforeG) 401:54:46UTF-EC 4 spacesLukas Kovalik3:43 PM[Platform] Refinement...
|
62348
|
|
37311
|
766
|
44
|
2026-04-16T12:24:26.040281+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776342266040_m1.jpg...
|
Finder
|
screenpipe
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Desktop
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F8
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
db.sqlite-shm
Yesterday at 19:06
33 KB
Document
#recycle
14 Apr 2026 at 20:54
634,9 MB
Folder
db.sqlite
14 Apr 2026 at 20:49
1,42 GB
Document
data
14 Apr 2026 at 20:37
921,8 MB
Folder
2026-04-14
Today at 15:24
703,3 MB
Folder
2026-04-13
14 Apr 2026 at 20:37
74,2 MB
Folder
2026-04-12
13 Apr 2026 at 17:25
51 MB
Folder
2026-04-11
13 Apr 2026 at 17:25
52,6 MB
Folder
2026-04-09
13 Apr 2026 at 17:24
40,6 MB
Folder
db.sqlite-wal
14 Apr 2026 at 20:35
Zero bytes
Document
app
14 Apr 2026 at 20:33
146 KB
Folder
docker-compose.yml
14 Apr 2026 at 20:33
580 bytes
YAML document
static...
|
[{"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":"Desktop","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-B5F8","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":"db.sqlite-shm","depth":7,"value":"db.sqlite-shm","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Yesterday at 19:06","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"33 KB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Document","depth":7,"role_description":"text"},{"role":"AXTextField","text":"#recycle","depth":7,"value":"#recycle","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:54","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"634,9 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"db.sqlite","depth":7,"value":"db.sqlite","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:49","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"1,42 GB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Document","depth":7,"role_description":"text"},{"role":"AXTextField","text":"data","depth":7,"value":"data","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:37","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"921,8 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026-04-14","depth":7,"value":"2026-04-14","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Today at 15:24","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"703,3 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026-04-13","depth":7,"value":"2026-04-13","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:37","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"74,2 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026-04-12","depth":7,"value":"2026-04-12","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Apr 2026 at 17:25","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"51 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026-04-11","depth":7,"value":"2026-04-11","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Apr 2026 at 17:25","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"52,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"2026-04-09","depth":7,"value":"2026-04-09","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"13 Apr 2026 at 17:24","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"40,6 MB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"db.sqlite-wal","depth":7,"value":"db.sqlite-wal","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:35","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Zero bytes","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Document","depth":7,"role_description":"text"},{"role":"AXTextField","text":"app","depth":7,"value":"app","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:33","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"146 KB","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":7,"role_description":"text"},{"role":"AXTextField","text":"docker-compose.yml","depth":7,"value":"docker-compose.yml","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"14 Apr 2026 at 20:33","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"580 bytes","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"YAML document","depth":7,"role_description":"text"},{"role":"AXTextField","text":"static","depth":7,"value":"static","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
3246988926894760817
|
8814547563299090371
|
click
|
accessibility
|
NULL
|
Favourites
jiminny
AirDrop
Recents
Applications
Do Favourites
jiminny
AirDrop
Recents
Applications
Documents
Desktop
Downloads
lukas
iCloud
iCloud Drive
Sync folder
Locations
DXP4800PLUS-B5F8
Eject
Network
Tags
CRM
Orange
Red
Yellow
Green
Blue
Purple
All Tags…
Name
Date Modified
Size
Kind
db.sqlite-shm
Yesterday at 19:06
33 KB
Document
#recycle
14 Apr 2026 at 20:54
634,9 MB
Folder
db.sqlite
14 Apr 2026 at 20:49
1,42 GB
Document
data
14 Apr 2026 at 20:37
921,8 MB
Folder
2026-04-14
Today at 15:24
703,3 MB
Folder
2026-04-13
14 Apr 2026 at 20:37
74,2 MB
Folder
2026-04-12
13 Apr 2026 at 17:25
51 MB
Folder
2026-04-11
13 Apr 2026 at 17:25
52,6 MB
Folder
2026-04-09
13 Apr 2026 at 17:24
40,6 MB
Folder
db.sqlite-wal
14 Apr 2026 at 20:35
Zero bytes
Document
app
14 Apr 2026 at 20:33
146 KB
Folder
docker-compose.yml
14 Apr 2026 at 20:33
580 bytes
YAML document
static...
|
37310
|
|
62717
|
1353
|
5
|
2026-04-21T08:03:59.562218+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776758639562_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-06.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:05:07
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.44375,"top":0.6838889,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.46840277,"top":0.67444444,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.49618056,"top":0.6838889,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.32673612,"top":0.68333334,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6177083,"top":0.68333334,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.56145835,"top":0.6894444,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.56145835,"top":0.68333334,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.56145835,"top":0.68333334,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.56145835,"top":0.6894444,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.56145835,"top":0.6816667,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.56145835,"top":0.6888889,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.59131944,"top":0.67833334,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.56145835,"top":0.69222224,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.56145835,"top":0.68722224,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.56145835,"top":0.69,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.56145835,"top":0.69,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:05:07","depth":1,"bounds":{"left":0.32673612,"top":0.72055554,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.328125,"top":0.72055554,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:18:48","depth":1,"bounds":{"left":0.5854167,"top":0.72055554,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.5868056,"top":0.72055554,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.55277777,"top":0.08888889,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-06.mp4","depth":1,"bounds":{"left":0.41597223,"top":0.08888889,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
-3342709269273471154
|
8813313112463387254
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:05:07
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4
QuickTime PlayerFileEditViewWindowHelpj Support Daily - in 3h 57 m100% C47•Activity MonitorAll ProcessesDOCKER* Build full da...[+00mk[+00ml[+00ml[+03m6[+06m4[+07m-$O $1-zsh@ For you© Recent$ Starred8: Арр»0 Spaces() Service-Desknny (Oid))ny New)@ Enterprise Stabllity 1Processing TeamC SE KanbanF More spacesE3 Contiuenc28 TeamsCustomise sidebО $82-zsh• *3screenpl• Refinement 2026-04-06.mp4 ~CAdtyEvaluation of AJ Panorama~ DescriptionWe are thinking of trying a cheaper model for Panorama. However we don't curmenty hacon tae eo do tor coler leelenaly. We want ton tor Au renorama Chal• Asses both speed of the response and quallty• for quality cover.• Jength of the answer - il needs to be concise, not 3 pages longĐĐ404405% 800 0 10000 1000 T00 B000 Т002008mes, importart numbersled and for the correct calis and timestamoopregation - have separate score for each ef them as we can use different modeis for each oneast 3 other models that ffe the needs - consider the cost of them for the selectionSubtasksAdd subtaskLinked work items-*) -00:36:343:38 PM| [Platform] Refinement •2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54][2026-04-2110:48:54]ArchiTotalSync=====lukas@Lukas-Kovaliks-MacBodCSV Import 28.01.22• LastPass Import 1.11.21C4Audae Visa tprove lechrica Sooryl2 Gatya DimtrovaQuick start developmentQ Open with VS Coce3 Create branch»02:18:48CPUMemoryNikolay YankovSteliyan GeorgievNikolay IvanovEnergyNikolay NikolovAneliya AngelovaLukas Kovalikэrу:Tue 21 Apr 11:03:59DiskNetworkJserlowserver4,25 GB2,24 GB7,01 GB...
|
62716
|
|
62718
|
1354
|
6
|
2026-04-21T08:03:59.659800+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776758639659_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-06.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:05:07
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:05:07","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:18:48","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5349069,"top":1.0,"width":0.0033244682,"height":-0.06384683},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-06.mp4","depth":1,"bounds":{"left":0.4694149,"top":1.0,"width":0.06549202,"height":-0.06384683},"role_description":"text"}]...
|
-3342709269273471154
|
8813313112463387254
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:05:07
toggle elapsed time, timecode and framecount
02:18:48
toggle duration and remaining time
document actions
Refinement 2026-04-06.mp4
Quickllme Playen••0!§ Project Phoenix - Figma[SRD-6793] Les Mills activity typeZ Jiminny MCP Connector - Product(UY-20676) Notify the user if a PanJiminny Mail(JY-20500) Batch initial sync for SIFeed - jiminny - Sentry& JiminnyJY-20701 | Reschedule HubSpot S@ Pipelines - jiminny/appNew TabService-Desk - Queues - Platforn• New Tab• Formalize- New TabWinaow• = www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=13800-17591&t=Eo27KG9cs01Uovbp-0Prolect PhoenixPages• SearchOnDemand• Playbacke Deal InsightsTeam Insiahtsnl Al Reports• Org. SettingsLayers# Illustrationur questions into ongoing insights# FrameI Tilustrationurn your Ask Jiminny questions into automated reports.ecific topics over time and get updates straight to your inbox.# 2# IllustrationOBJECTS=headen• Dark Side NAVSCROLLStt Frame 210468 Frame 21048• headline• Frame 21064T Turn your questionsCreate Your First ReportT Turn your Ask Jimin€ Filince 25TA Don't show the page except if the1AllPAA#ListExec Report Adoption - PD-190QDg+Al ReportsTurn yoongoingTurn your Ask.Track specific tyour inbox.Irack coaching progrneir progress weevery callFollow a specific trerTrack things like objectionacross your calls.Create Your FirstYou can oniuppont Dally • In 3n 0/1FavouritesE jiminny(* AirDrop• Recents* Application9 Documents© Downloadsii lukasiCloud• iCloud Drive283 Sync folderLocationsDXP4800PLUS-B5F® Network• CRM• Orange•Red• Yellow• Green• Blue• Purple• All Tags.workv N 2026u Refinement 2026-04-06.mp4• Dally 2026-04-21.mp4De Refinement 2026-04-20.mp4Daily 2026-04-17.mp4rú Dailv 2026-04-16.mo4# Planning 2026-04-15.mp4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4• User pilot (Adi) 2026-04-09.mp4- Daily 2026-04-09.mp4w Daily 2026-04-08.mp4• Dailv 2026-04-07 mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4Hi Retro 2026-03-31.mp4- Daily 2026-03-31.mp4_ Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4c Daily 2026-03-26.mp4Dailv 2026-03-24.m04- Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/* Refinenment 2026-03-16.mp4• Daily 2026-03-16.mp4c Dailv 2026-03-13.mn4a 1-1 2026-03-12.mp4ka Dallv 2026-03-11.mo4•: Daily 2026-02-10 mn/* Refinennent 2026-03-09.mp4Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4- Daily 2026-03-02.mp4r Dailv 2026-02-27mo4eN Daily 2026.02.26 malDaily 2026-02-25.movn Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn4Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mo4Date ModifiedTodau at 11:09Today at 10:00Yesterdav at 16:56Yesterday at 10:0617 Apr 2026 at 10:1616 Aor 2026 at 10:0015 Apr 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:09Q Anr 2026 at 11:179 Apr 2026 at 10:078 Apr 2026 at 10:137 Aor 2026 at 10:016 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2031 Mar 2026 at 18:2931 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0023 Mar 2026 at 17:0323 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3511 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:092 Mar 2026 at 10:0727 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0321 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 11:03:59v Size-- Folder2,41 GB567,8 MBMPEG-4 movie4.25 GBMPEG-4 movie698,5 MBMPEG-4 movie1,16 GBMPEG-4 movie513.4 M:MPEG-4 movie2,75 GBMPEG-4 movie1,44 GB924,4 MBMPEG-4 movie262 AMR MDEGLA movid748,8 MBMPEG-4 movie1,04 GBMPEG-4 movie575.5 M:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4.68 G:MPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MB550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MBMPEG-4 movie1.02 GE637,6 MBMPEG-4 movie978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MBMPEG-4 movie291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MB791,7 MBMPEG-4 movie520 7 MPMPEG-A movie2 GB QT movie2,52 GB234 2 MEMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
NULL
|
|
62359
|
1346
|
27
|
2026-04-21T07:51:29.756055+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757889756_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:22:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:22:22","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
7606499712438832520
|
8813313052333836918
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:22:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelp• Refinement 2026-04-20.mp4Nikolay Nikolov (Presenting, annotating), 0j Support Daily • in 4h 9 m100% C478Tue 21 Apr 10:51:298TogolA. LLM Leaderboard.Q Search|iminay (New) / Jy-15971 / A JY-20501A JY-20500 Batch initial sync for SalesforceActivityCommentsHistoryWork logNikolay Nikolov added a Comment3munutes aoclInitial Owner/Profile Sync for OpportunitiesWhere It HappensTrigger: ProfileCreated event → SyncProfileOpportunities listener1 User connects to CRM → Profile created → ProfileCzeated eventSyncProfileOpportunities::handle()SyncOpportunitsesJob dispatchedLocationSyncProfile0pportunities.phpHow It WorksQ 8.Mon 20 Apr 16:117 [Jy-20500) Batch(uY-20501] Batch i x01.5103 - Reteer x | E Sminny - Calenda• 01 1000C Debug crm-sync.0 Refine C Sentry CJ ES C Learn Al Chapter Homekeviem( Rev Prophet () My PRs• WorkC All Bookmarks+ CreateAsk RovoACkOGYDetailsFix versionsNoneSprintPlatform Sprint 3 Q2Reverse sort direction DaysNoneNeed QANoParentY-15971 CRM Synching ImprovenCanny LinksOpen Canny LinksMore fields |Original estimateTime trackingNo time logged› Automation 4> featureOS Open featureOs› Sentry Al! Unked Issues01:54:46Aneliya AngelovaStefka Stoyanova3 othersNikolay NikolovACUONProfi2meet google.01:22:23Turn off microphone (2 + d)Lukas Kovalik4:11 PM | [Platform] Refinement •"...
|
62358
|
|
62360
|
1347
|
29
|
2026-04-21T07:51:29.663708+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757889663_m2.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:22:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:22:22","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.5455452,"top":1.0,"width":0.0033244682,"height":-0.0303272},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.4800532,"top":1.0,"width":0.06549202,"height":-0.0303272},"role_description":"text"}]...
|
7606499712438832520
|
8813313052333836918
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:22:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
Quickllme PlayenActivityMoreJiminny …..Dratts & centi8 DirectoriesEb External connections# Starred8 jiminny-x-integrati...& platform-inner-teamE Channels# ai-chapter# alertsS hackendi# confusion-clinic# curiosity_lab# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product launches# random# releases# support# thank-yous# the_people_of_jimi...• Direct messages• Vasil Vasilev.P. Nikolay Nikolov. Aneliya Angelova. Galya Dimitrovaa. Stefka StoyanovaR. Stoyan Tomov3 Aneliya Angelova, .Stovan TaneyP. Nikolay IvanovP. Vesi: AppsS Jira Cloud• ToastAl Reports > Empty page design and promotion - Search#rekShow results for: Al Reports > Empty page design and promotionEnterMessageShow results in this channel for: Al Reports > Empty page design and promotionProlelag:Calva Dimitrova Direct Mescace with Galva DimitrovalJY-20372 Al Reports > Empty page design and promotionApr 16th at 11:59 AMCirckDepl.v SelectGive feedbackProject: appWhen: 04/20/2026 14:12:24View JobTodavGitHub APP 9:32 AM3 new commits pushed to master by LakyLak922c5e7e - JY-20698 handle failed field sync on playbook import activity typesc6e14fbd - Merge branch 'master' into JY-20698-fix-SF-activity-types-on-new-Dlaybookb3760452 - Merge pull request #11988 from jiminny/JY-20698-fix-SF-activity-types-on-new-playbook)jimnwlapo Added by GithubCircleCl APP 9:56 AMDeployment Successful!Project: appWhen: 04/21/202606.56-27Tho.View Jobciitlinh App 10.20 AM3 new commits pushed to master by TodorStamatovJiminny3ba7bcf9 - JY-20708: update elastic search on new activity62aoc7dh - Merge branch 'master' into JY-20708-e ashicsearch-new-activitiedc153952e - Merge pull request #11992 from jiminny/JY-20708-elasticsearch-new-activitiesjiminny/app | Added by GitHubMessage #releases+ Аa822ravountesE jiminny(* AirDrop• Recents* Applications© Documentsii lukasiCloud• iCloud Drive992 Svnc toldeLocationsO DXP4800PLUS-B5F A® Network• CRM• Orange• Red• Yellow• PurpleO All Tags...Support Daily - in 4h 9mworkv N 2026= Daily 2026-04-21.mp4Da Retinelent 2026-04-20.mp4Daily 2026-04-20.mp4Daily 2026-04-17.mp4Fu Daily 2026-04-16.mp4F™ Pannina 2026-04-15.mo4Retro 2026-04-14.mp4• Daily 2026-04-14.mp4User pilot (Adi) 2026-04-09.mp4w Daily 2026-04-00 mnЛ• Daily 2026-04-07.mp4- Refinement 2026-04-06.mo4= Daily 2026-04-06.mp4- Daily 2026-04-03.mp4lax Plannina 2026-04-01 & task split.mp4M: Datra 2026.02-21 mn/- Refinement 2026-03-30.mp4na Daily 2026-02-30.mn/- Daily 2026-03-27.mp4Daily 2026-03-26.mp4• Dailv 2026-03-24,m04• Refinement 2026-03-23.mp4** BE chapter 2026-03-20.mp4= Daily 2026-02-20 mn4sm Planing 2026-03-18-converted.mp4- Refinement 2026-02-09-converted.mp4Rя Dailv 2026-03-19.mo4- Review 2026-03-18.mp4Planing 2026-03-18.mp4F Retro 2026-03-17m04= Daily 2026-02-17 mn/ment 2026-03-16.mp4- Dally 2026-03-16.mp4c Dailv 2026-03-13.mn4с 1-1 2026-03-12.mр4xa Dallv 2026-03-11.m04•: Daily 2026-02-10 mn/nent 2026-03-09.mp4• Daily 2026-03-09.mp4Fu Daily 2026-03-06.mn4a: Planning 2026-03-04.mp4Daily 2026-03-02.mp4* Dailv 2026-02-27 mo4eN Daily 2026.02.26 malDaily 2026-02-25.movlan Opportunity-Contacts 2026-02-24.mp4ma Daily 2026-02-24 mn/Refinement 2026-02-23.mov= Daily 2026-02-20 & Ani.mp4- Dailv 2026-02-19.mo4к Review 2026-02-18.mD4Date ModifiedTodau at 10:02Yesterday at 16.56Yesterdav at 10:0617 Apr 2026 at 10:1616 Apr 2026 at 10:0015 Aor 2026 at 11:1414 Apr 2026 at 17:3714 Apr 2026 at 10:099 Apr 2026 at 14:47QAnr 2026 at 10:078 Apr 2026 at 10:137 Apr 2026 at 10:016 Aor 2026 at 17:206 Apr 2026 at 10:083 Apr 2026 at 10:211 Aor 2026 at 12:2021 Mar 2026 at 19:2031 Mar 2026 at 10:1030 Mar 2026 at 17:1220 Mar 2026 at 10:0527 Mar 2026 at 10:0926 Mar 2026 at 9:5924 Mar 2026 at 10:0022 Mar 2026 at 17:0223 Mar 2026 at 10:0020 Mar 2026 at 11:4620 Mar 2026 at 10:0619 Mar 2026 at 12:0119 Mar 2026 at 11:3519 Mar 2026 at 9:5718 Mar 2026 at 16:2018 Mar 2026 at 11:1417 Mar 2026 at 17:4017 Mar 2026 at 10:1916 Mar 2026 at 16:5516 Mar 2026 at 10:0213 Mar 2026 at 10:1212 Mar 2026 at 18:3512 Mar 2026 at 10:1011 Mar 2026 at 10:0610 Mar 2026 at 0:579 Mar 2026 at 17:049 Mar 2026 at 9:566 Mar 2026 at 9:574 Mar 2026 at 11:0927 Feb 2026 at 10:0226 Eoh 2026 at 0:5225 Feb 2026 at 9:5924 Feb 2026 at 12:0324 Feh 2026 at 10:0223 Feb 2026 at 16:3119 Feb 2026 at 9:54O CAh GAG A+ 46.0GTue 21 Apr 10:51:29v Size-- Folder567,8 MB4,25 GBMPEG-4 movie698.5 MEMPEG-4 movie1,16 GBMPEG-4 movie513,4 MBMPEG-4 movie2.75 G:MPEG-4 movie1,44 GBMPEG-4 movie924,4 MB362.6 MBMPEG-4 movie719 8MR MDEG-A movid1,04 GBMPEG-4 movie575,5 MBMPEG-4 movie4.34 G:MPEG-4 movie720,5 MB MPEG-4 movie1,02 GB4.68 G:MPEG-4 movie3,4 GBMPEG-4 movie923,6 MBMPEG-4 movie2,77 GBMPEG-4 movie6418MPMPEG-A movid884,3 MBMPEG-4 movie476,6 MBMPEG-4 movie550.8 MEMPEG-4 movie3,44 GBMDEG.A movid438,9 MBMPEG-4 movie1,68 GBMPEG-4 movie120 A MPMDEG-A movie2,38 GBMPEG-4 movie2,26 GB386.3 MEMPEG-4 movie705,8 MBMPEG-4 movie2,78 GBMPEG-4 movie1,53 GBMPEG-4 movie12 GPMDEG-A movid4,19 GBMPEG-4 movie592,2 MB1.02 GEMPEG-4 movie637.6 MBMDEC.A movid978,7 MBMPEG-4 movie798,7 MBMPEG-4 movieAOA 6MPMDSG-A movie4,16 GBMPEG-4 movie319,7 MB291.7 MEMPEG.A movid2,62 GB MPEG-4 movie768,5 MB546.8 MBMPEG-4 movieO6 GMR OT movio503,5 MBQT movie791,7 MBMPEG-4 movieMPEG-A movie2 GB QT movie234 2 MBMPEG-4 movieOEAMP MОRA A MAVid1 of 144 selected, 2,03 TB available...
|
NULL
|
|
62407
|
1346
|
49
|
2026-04-21T07:52:43.574933+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757963574_m1.jpg...
|
QuickTime Player
|
Refinement 2026-02-09.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:53:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7583333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7677778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7677778,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7672222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7672222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.7733333,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.76555556,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7727778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.76222223,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7761111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.77111113,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.7738889,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:53:26","depth":1,"bounds":{"left":0.3482639,"top":0.80444443,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.80444443,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"02:02:30","depth":1,"bounds":{"left":0.60694444,"top":0.80444443,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.80444443,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.57430553,"top":0.08888889,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-02-09.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.08888889,"width":0.13611111,"height":0.017777778},"role_description":"text"}]...
|
5658760702511194809
|
8813313043727125108
|
visual_change
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:53:26
toggle elapsed time, timecode and framecount
02:02:30
toggle duration and remaining time
document actions
Refinement 2026-02-09.mp4
QuickTime PlayerFileEditViewWindowHelp, 0j Support Daily - in 4h 8 m-zshDOCKER• ₴1-zshО $82-zsh• ₴3* Build full da...• *4screenpipe"О ₴5Refinement 2026-02-09.mp4 v-zsh₴6APP (-zsh)Galya Dimitrova (Presenting, annotating)FileHistoryDevelopHelpAQ 8 • Mon 9 Feb 16:56Sentry|3 HubSpor• OpenAl# Seit ServiceAWS US@ AWS EU14 Dust - Buljiminny.atlassian.net@ AWS AIPlanhatE Dust Docs+|4 LogRocket$ Code swit.) FirebaseE IntercomM UserpilotP Postmark |• 02 Admin |• X-т+ [JY-18909• OpenAl API|F FigmaJIMINNYQ Search|+ CreateUpgrade•Spaces /Jiminny (New) / sY-19240 / A Jy-18909® For you• Recent |# Starred8° Apps& PlansQ Spaces|Nikolay Yankov9 February 2026 at 15:38 (edited)QuestionsStarteoJiminny (New)| @D Platform Team|IID Processing TeamIID Capture TeamIID Enterprise Stability I...UID SE KanbanDiscoverya Product• Expiration meaning?• Files-will-be-deleted-in X-time?• Template will stop generate new reports in X time? - yes. And will become disabled.• The users will not know the number of activities that will be used for the report. Shall we report thenumber of activities? - no need for now• If we generate an empty report? - we need at least 1 activity to generate the report. In the report weneed to specify how many activities we have analysed for the report. If there are no activities we willinform the user with an emall (will be in another story).• Custom report name - what happens with the dates appended to the name? - yes, append the date tothe namel• We will take the period from the frequency, not from the dates in the saved search.• Filtering, order by - will be done in the FE(9 Service-Desk= More spaces= FiltersB Dashboards© OperationsAdd a comment....Suggest a reply...Who is working on this...?Status undate.Pro tip: press (M to comment"+)).x) Confluence01:53:264:56 PM | [Platform] Refinement ®lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ UAsk Rovo<Backlog v*x Improve Story• My pinned fieldsParent• JY-19240 AJ Reports |v Details |Assignee8 UnassignedAssign to meReporter& Galya DimitrovaDevelopment@ Open with VS Code|!) Create branch1 commit4 months ago»02:02:30• 87100% <7Tue 21 Apr 10:52:431881ec2-user@ip-…• 88-zsh• *9Nikolay YankovYИИIМІLNikolay NikolovGalya DimitrovaAneliya AngelovaSteliyan Georg..Nikolay IvanovLukas Kov....
|
62406
|
|
62348
|
1346
|
20
|
2026-04-21T07:50:56.723469+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757856723_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:34:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"00:34:22","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
6036724799189076899
|
8812187418714966646
|
visual_change
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
00:34:22
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelp• Refinement 2026-04-20.mp4Nikolay Nikolov (Presenting, annotating)j Support Daily - in 4 h 10 m100% CTue 21 Apr 10:50:56007woro eocA. LLM Leaderboard.Q Search|Aminny (New) / Jy-15971 /Д JY-20501|Add a comment...Suggest a reply....Who is working on this.?Pro tip: press (M to commentNikolay Nikolov &Manual Sync CommandsThese are the existing commands that call syncContacts() / syncAccounts() (one-by-one processing):UsageCab.synecontassphp artisan crm:sync-contact --teanid»X -=froms*2024-01-81*crm:sync-accountphp artisan crn:sync-account --teanid»X --fron+*2024-81-01*php artisan cEn:syne-Jead --tean1doX --fxonv*2824-81-81*VARASYIVUELEALphp artisan crn:sync-opportunity --teanid»X --fxon-"2024-81-81"Recommended Approach for HubSpot: Populate Redis + Trigger Batch ProcessingThis is the simplest and most consistent approach because1. Reuses existing infrastructure - No new jobs needed2. Same processing path - Initial sync uses the same Inport»ßatch jobs as regular sync3. Minimal code changes - Just modify the syncContacts() / syncAccounts() methods4. Consistent retry/failure handling - Uses existing Redis + job retry mechanismsq 8.Mon 20 Apr 16:29[JY-20500) Batch(uY-20501] Batch i x01.08.13 - Retinen x | E Sminny - Calenda© Work5 1000C Debug crm-sync.0 Refine C Sentry CJ ES Learn CJ AlChapter Home@ Reviem( Rev Prophet () My PRsAl bookmark+ CreateDetailsFix versionsSprintDaysNeed QAParentCanny LinksMore fields |Original estimateTime trackingAsk RovoNonePlatform Sprint 3 Q2NoneNo• JY-15971 CRM Synching ImprovenOpen Canny LinksNo time logged› Automation 4> featureOS 5 Open featureOs> Sentry all UnkedIssuesNikolay YankovPop out thMore screens are othis video while yoNikolay Nikölov2 othersAneliya Angelova00:27:2801:54:46Lukas Kovalik3:29 PM | [Platform] Refinement •...
|
NULL
|
|
62361
|
1346
|
28
|
2026-04-21T07:51:30.748264+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776757890748_m1.jpg...
|
QuickTime Player
|
Refinement 2026-04-20.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:27:27
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.4652778,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.48993057,"top":0.7783333,"width":0.02013889,"height":0.037777778},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.51770836,"top":0.7877778,"width":0.017361112,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.3482639,"top":0.7872222,"width":0.015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6392361,"top":0.7872222,"width":0.0125,"height":0.017777778},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.013888889,"height":0.022222223},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.5829861,"top":0.7872222,"width":0.013888889,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.5829861,"top":0.79333335,"width":0.015277778,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.5829861,"top":0.78555554,"width":0.017361112,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.5829861,"top":0.7927778,"width":0.014583333,"height":0.023333333},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.6128472,"top":0.7822222,"width":0.013541667,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.5829861,"top":0.7961111,"width":0.014583333,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.7911111,"width":0.013888889,"height":0.026666667},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.017361112,"height":0.02111111},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.5829861,"top":0.79388887,"width":0.013194445,"height":0.02111111},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:27:27","depth":1,"bounds":{"left":0.3482639,"top":0.8244445,"width":0.03923611,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.34965277,"top":0.8244445,"width":0.036458332,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"01:54:46","depth":1,"bounds":{"left":0.60694444,"top":0.8244445,"width":0.044791665,"height":0.016666668},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.60833335,"top":0.8244445,"width":0.042013887,"height":0.016666668},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.575,"top":0.04222222,"width":0.0069444445,"height":0.017777778},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Refinement 2026-04-20.mp4","depth":1,"bounds":{"left":0.43819445,"top":0.04222222,"width":0.13680555,"height":0.017777778},"role_description":"text"}]...
|
-8657649386053389643
|
8812187152561212022
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
01:27:27
toggle elapsed time, timecode and framecount
01:54:46
toggle duration and remaining time
document actions
Refinement 2026-04-20.mp4
QuickTime PlayerFileEditViewWindowHelpNikolay Nikolov (Presenting, annotating), 0• Refinement 2026-04-20.mp4j Support Daily - in 4h 9 m100% C47Tue 21 Apr 10:51:308~ Activity•cworoes| [JY-20613) ABk7 [JY-20500) Ba:7 (uv-20501j Bи: x0 02:03:53- Retr X Jminhy-Calen X ( Meet - PtarNhoetenesTogolA. LLM Leaderboard.D TO00C Debug crm-sync.C3 Retine C Sentry C ES CJ Learn CJ Al Chapter HomeQ Search|Sminay (New) / JY-15871 / A JY-20501HistoryWOrK 10gNormal textД.==% +~0BE 1m QA: 1|9. 8 + Stefika Stoyanova 2 + Galya Dimitrova & + Nikolay Yankov & + Anellya Angelova + Mario Georgiev© + Lukas Kova<CancelNikolay Nikolov5 minutes agoInitial Owner/Profile Sync for OpportunitiesWhere It HappensTrigger: ProfileCreated event → SyncProfileOpportunities listener1 User connects to CRM → Profile created ProfileCreated eventSyncProfileOpportunities::handleSyncOpportunitiesJob dispatchedLocationmeet google.( Rev Prophet |+ CreateDetailsFix versionsSprintDaysNeed QAParentCanny Links• More fieldsOriginal estimateTime trackingNo time logged› Automation 4> featureOS 5 Open featureOS› Sentry All UinkedIssuesа 8.Mon 20 Apr 16:24Fj Workers | Datad• My PRS|• WorkC All Bookmarks: Ask RovoNonePlatform Sprint 3 Q22YesJy-15971 CRM Synching ImproverOpen Canny LinksGalya DimitrovaStefka Stoyanova3 othersNikolay Nikolov01:22:2201:54:46Lukas Kovalik4:24 PM | [Platform] Refinement ®...
|
NULL
|
|
61594
|
1328
|
30
|
2026-04-21T07:03:11.029764+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754991029_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
07:00
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"07:00","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
-4218624835645736682
|
8808528312703650422
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
07:00
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
QuickTime PlayerFileEditViewWindowHelpApril 2026 Week 17EESTMon 20Tue 21Chloe Cross (Parental Leave - 256 days)Ivelina Hristova (Parental Leave - 184 days)Andrea Zlatanova (Parental Leave - 189 days)Wed 22Thu 2308:0009:0010:0311:0012:0013:0014:0015:0016:00Daily - Platform 09:45Daily - Platform 09:45Daily - Platform 09:45Daily - Platform 09:45UserpilotIntroduction11:30-12:30Preparation! SupportRefinement15:00-16:00Support Daily 15:00Screen SaCOLLECTIONSBatteryPersonal collection0. Lock ScrelTouch ID &My vaultSendSupport Daily 15:00.Support Daily 15:00- E1-46976891-4697689§ Daily - Platform • 2 m leftWeek vTodaySat 25Sun 26Fri 24( Lauren Hudson (PTO...( Steliyan Georgiev (P…..1 Daily - Platform 09:451 Support Daily 15:00.FirefoxCP Isolated Web ContentMEMORY PRESSURE182,1 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% C8Tue 21 Apr 10:03:10CPUMemoryEnergyDiskNetworkThreadsPorts PID ,00 GB13,74 GB2,21 GB2,28 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,26 GB2,70 GB6,22 GB...
|
NULL
|
|
61585
|
1328
|
25
|
2026-04-21T07:03:02.277065+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754982277_m1.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
04:54
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"04:54","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"role_description":"text"}]...
|
2605448778924856094
|
8808528037825743478
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
04:54
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
QuickTime PlayerFileEditViewWindowHelpApril 2026 Week 17EESTMon 20Tue 21Chloe Cross (Parental Leave - 256 days)Ivelina Hristova (Parental Leave - 184 days)Andrea Zlatanova (Parental Leave - 189 days)Wed 22Thu 2308:0009:0010:0311:0012:0013:0014:0015:0016:00Daily - Platform 09:45Daily - Platform 09:45Daily - Platform 09:45Daily - Platform 09:45UserpilotIntroduction11:30-12:30Preparation! SupportRefinement15:00-16:00Support Daily 15:00Screen SaCOLLECTIONSBatteryPersonal collection0. Lock ScrelTouch ID &My vaultSendSupport Daily 15:00.Support Daily 15:00- E1-46976891-4697689Week vSat 25§ Daily - Platform • 2 m leftTodaySun 26Fri 24( Lauren Hudson (PTO...( Steliyan Georgiev (P…..1 Daily - Platform 09:451 Support Daily 15:00.FirefoxCP Isolated Web ContentMEMORY PRESSURE182,2 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <8Tue 21 Apr 10:03:02CPUMemoryEnergyDiskNetworkThreadsPorts PID ,00 GB13,66 GB2,27 GB2,28 GBApp Memory:Wired Memory:Compressed:Userlukaslukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,89 GB2,94 GB6,27 GB...
|
61584
|
|
61586
|
1329
|
22
|
2026-04-21T07:03:02.367410+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776754982367_m2.jpg...
|
QuickTime Player
|
Daily 2026-04-21.mp4
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
04:54
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"rewind","depth":1,"bounds":{"left":0.54521275,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"play/pause","depth":1,"bounds":{"left":0.55701464,"top":0.7134876,"width":0.009640957,"height":0.027134877},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"fast forward","depth":1,"bounds":{"left":0.5703125,"top":0.72027135,"width":0.00831117,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"mute","depth":1,"bounds":{"left":0.48919547,"top":0.72027135,"width":0.007480053,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"More Controls","depth":1,"bounds":{"left":0.6284907,"top":0.7198723,"width":0.005984043,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"toggle full screen","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.0066489363,"height":0.015961692},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":1,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_focused":false},{"role":"AXButton","text":"show external playback menu","depth":2,"bounds":{"left":0.59857047,"top":0.71907425,"width":0.0066489363,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show media selection menu","depth":1,"bounds":{"left":0.59857047,"top":0.72426176,"width":0.00731383,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"toggle picture-in-picture playback","depth":1,"bounds":{"left":0.61120343,"top":0.7186752,"width":0.00831117,"height":0.015961692},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show action menu","depth":1,"bounds":{"left":0.59857047,"top":0.7238627,"width":0.006981383,"height":0.016759777},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"share","depth":1,"bounds":{"left":0.62549865,"top":0.71628094,"width":0.006482713,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"show chapter menu","depth":1,"bounds":{"left":0.59857047,"top":0.72625697,"width":0.006981383,"height":0.011971269},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7226656,"width":0.0066489363,"height":0.01915403},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXCheckBox","text":"zoom","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.00831117,"height":0.015163607},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXButton","text":"playback speed","depth":1,"bounds":{"left":0.59857047,"top":0.7246608,"width":0.0063164895,"height":0.015163607},"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"04:54","depth":1,"bounds":{"left":0.48919547,"top":0.74660814,"width":0.012632979,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle elapsed time, timecode and framecount","depth":1,"bounds":{"left":0.4898604,"top":0.74660814,"width":0.011303191,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"14:32","depth":1,"bounds":{"left":0.6193484,"top":0.74660814,"width":0.01512633,"height":0.011971269},"role_description":"text"},{"role":"AXCheckBox","text":"toggle duration and remaining time","depth":1,"bounds":{"left":0.6200133,"top":0.74660814,"width":0.013796543,"height":0.011971269},"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false},{"role":"AXMenuButton","text":"document actions","depth":1,"bounds":{"left":0.59042555,"top":0.21947326,"width":0.0033244682,"height":0.012769354},"role_description":"menu button","is_enabled":false,"is_focused":false},{"role":"AXStaticText","text":"Daily 2026-04-21.mp4","depth":1,"bounds":{"left":0.53956115,"top":0.21947326,"width":0.05086436,"height":0.012769354},"role_description":"text"}]...
|
2605448778924856094
|
8808528037825743478
|
click
|
hybrid
|
NULL
|
rewind
play/pause
fast forward
mute
More Controls
rewind
play/pause
fast forward
mute
More Controls
toggle full screen
show external playback menu
show external playback menu
show media selection menu
toggle picture-in-picture playback
show action menu
share
show chapter menu
zoom
zoom
playback speed
04:54
toggle elapsed time, timecode and framecount
14:32
toggle duration and remaining time
document actions
Daily 2026-04-21.mp4
Cuickllme PlayercaltWindowIY [SRD-6793] Les Mills activity type(SRD-6787] Issue with reconnectinX Jiminny MCP Connector - Product+ (UY-20676) Notify the user if a PanM Jiminny Mail(JY-20500) Batch initial sync for S.Feed - jiminny - Sentry& Jiminny() JY-20701 | Reschedule HubSpot SPipelines - jiminny/appNew TabService-Desk - Queues - PlatfornFITAF1 14m 22c567 8 MRVIeWMelpy.atlassian.net/jira/software/c/projects/JY/boards/37O JIMINNY@ For you© Recent|# Starred0+ Apps|• SpacesJiminny (New)ul Plarorm leamIID SE KanbanII Capture TeamW Enterprise Stability I...ID Processing TeamC Service-Desk= More spaces— FiltersC DashboardsC÷ OperationsI2 Confluence: Teams"= Customise sidebar|Q SearchSpaces / Jiminny (New)Platform TeamSummary& TimelineE BacklogI Active sprints@ Calendar12 Reports4 Testing Board# ListE Formse Components⅔› Development⅘> CodeO SecurityQ Search board00001Epic vType vREADY FOR DEV 7Rework Nudges - Phase 2 - changeNudaes to use the indexed at periodCOST-EFFECTIVE AND FASTER NUDGESBacklogN JY-20489Investigate and fix why exceedronrawesome packade limirsiMAINTENANCEReady for Devl JY-20564|AI Reports > Empty page design andpromotionAJ REPORTSBacklog[ JY-20372Send emall notitication when the revort is.not generatedAJ REPORTSBacklog[ JY-201572 •000=|Notify a user before the AJ Report expiresAJ REPORTSBacklog[ JY-20508Svnc obbortunities without a local owner(user_id is null)PLATFORM STABILITYBacklogEJY-20352D Daily 2026-04-21.mp4IN DEV 2Change foreveexpirationCOST-EFFECTIVIn Dev |Platform Team 88… JY-9712# JY-18679| @ JY-19798AI Review - QOKey PointsGROWTH - MAINIn DevEvaluation tor Al Activity lypes0 JY-20566A few months ago we launch a new feature which uses Al to detect the activity type of a call. This is done by adding a• create automatic evaluation for AI Activity Type featureNikolay Ivanov2 Galya Dimitrov?Open with VS CodeSubtasksII »9:50 AM | Daily - Platform• Dally - Platrorm • 4m lemt100% LzTue 21 Apr 10:03:02+ CreateAsk Rovo• Releases• DeploymentsE Archived work itemsE Docs@ ShortcutsvSlack integration& Reporting CenterComolete soriniGroup: QueriesSteliyan GeorgievAneliya Angelova3 othersDEPLOY 7Prepare fallback with email for SSO forpersistent name_id_ tormatREDUCE CHURNClosed… JY-20632m•ee=AJ Panorama > Don't show internal errorsto customersASK ANYTHING ON ANYTHINGDeployedProphet)₴ JY-20278@ •=Upgrade Python and libraries - AprMAINTENANCEDeployedE JY-19967|1@ ••=CLONE - [Team insights] Filter gets resetautomaticallv(SUPPORT TICKETSDeolovedIYY JY-206810.5 ? •edTssue with reconnectina 7oholSUPPORT TICKETSDeployedY .IY-20692Toch Navl Tmnrove Nenendahot Rot 8ClosedIEJY-20696Les Mills activity types not pulling in...
|
NULL
|
|
41456
|
879
|
27
|
2026-04-17T06:14:04.915154+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776406444915_m1.jpg...
|
Firefox
|
CloudWatch | us-east-2 — Work
|
1
|
us-east-2.console.aws.amazon.com/cloudwatch/home?r us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-86400~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2fd8fe2b34-1f65-47dd-9f3a-f6cd4b33924a*2f*20*0a*7c*20filter*20*40message*20not*20like*20*2fAnalytic*2f*20*7c*20filter*20*40message*20not*20like*20*2fTranscript*2f*0a*7c*20filter*20*40message*20not*20like*20*2fWebhook*2f*20*7c*20filter*20*40message*20not*20like*20*2fMeetingBot*2f*20*0a*7c*20limit*2010000~queryId~'0551e814-f51a-4339-8372-80d7ba4cef27~source~(~'worker~'worker-analytics~'worker-app~'worker-audio~'worker-calendar~'worker-conferences~'worker-crm-sync~'worker-default~'worker-delayed~'worker-dialers~'worker-dialers-fifo~'worker-download~'worker-emails~'worker-meeting-bot~'worker-nudges~'worker-processing-1~'worker-processing-2~'worker-processing-3~'worker-processing-4~'worker-processing-5~'worker-processing-delayed~'worker-softphone~'worker-video~'worker-video-app~'php~'php-app)~lang~'CWLI~logClass~'STANDARD~queryBy~'logGroupName)...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)
PROD
Account ID: 4103-4619-5943
PROD
EC2 EC2
EC2
Elastic Container Service Elastic Container Service
Elastic Container Service
S3 S3
S3
CodeDeploy CodeDeploy
CodeDeploy
CloudWatch CloudWatch
CloudWatch
ElastiCache ElastiCache
ElastiCache
Aurora and RDS Aurora and RDS
Aurora and RDS
Amazon OpenSearch Service Amazon OpenSearch Service
Amazon OpenSearch Service
CloudFront CloudFront
CloudFront
MediaLive MediaLive
MediaLive
Open side navigation
CloudWatch
CloudWatch
Logs Insights
Logs Insights
Query definition
Query definition
Info : Query definition
5m (5 Minutes)
30m (30 Minutes)
1h (1 Hour)
3h (3 Hours)
12h (12 Hours)
Custom (1d)
Custom (1d)
Compare (Off)
Compare
(
Off
)
Time zone UTC timezone
UTC timezone
Start tailing with selected log group (opens in a new tab)
Start tailing
Query scope
Query scope Log group name
Log group name
Select up to 50 log groups
Show more chosen log groups
Show more chosen log groups (+25)
Browse
:
Log Groups
|
Facets
|
Lookup tables
Undo
Redo
Logs Insights QL
Query generator
Query generator
Fields
Saved and sample queries
Query commands
Run query
Cancel
Save
History
Fetching results
Estimated remaining time: 1 seconds
Logs (2)
Logs
(
2
)
Patterns (-)
Patterns
(
-
)
Visualization
Visualization
Logs (2)
Logs (2)
Summarize results
Summarize results
Investigate
Investigate
Share results
Share results
Export results
Export results
Add to dashboard
Showing 2 of 2 records matched - Scanning...
49,252,340 records (13.5 GB) scanned in 24.1s @ 2,039,856 records/s (571.4 MB/s)
Hide histogram
Hide histogram
Filter table results
2026-04-16T17:00:17.343Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.152Z
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.343Z
2026-04-16T17:00:17.152Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
410346195943:worker-analytics
Fetching results : 67.34154144080435%
CloudShell
CloudShell
Feedback
Feedback
©
2026
,
Amazon Web Services, Inc.
or its affiliates.
Privacy
Privacy
Terms
Terms
Cookie preferences...
|
[{"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":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","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":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"CloudWatch | us-east-2","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":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"AWS Console Home","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to Main Content","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to Main Content","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Amazon Q","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Services","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Search","depth":16,"role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Amazon Q","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Option+S]","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CloudShell","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Notifications (none available)","depth":16,"help_text":"Notifications","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Help & support","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Settings","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"United States (Ohio)","depth":15,"value":"United States (Ohio)","help_text":"United States (Ohio)","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"United States (Ohio)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"PROD","depth":15,"help_text":"Production_View_Only @ jiminny","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Account ID: 4103-4619-5943","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PROD","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"EC2 EC2","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"EC2","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Elastic Container Service Elastic Container Service","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Elastic Container Service","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"S3 S3","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"S3","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CodeDeploy CodeDeploy","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CodeDeploy","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudWatch CloudWatch","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"ElastiCache ElastiCache","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ElastiCache","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Aurora and RDS Aurora and RDS","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Aurora and RDS","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Amazon OpenSearch Service Amazon OpenSearch Service","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Amazon OpenSearch Service","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudFront CloudFront","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudFront","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"MediaLive MediaLive","depth":16,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MediaLive","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open side navigation","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"CloudWatch","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Logs Insights","depth":14,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Logs Insights","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Query definition","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Query definition","depth":28,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Info : Query definition","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"5m (5 Minutes)","depth":27,"help_text":"5 Minutes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"30m (30 Minutes)","depth":27,"help_text":"30 Minutes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"1h (1 Hour)","depth":27,"help_text":"1 Hour","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"3h (3 Hours)","depth":27,"help_text":"3 Hours","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"12h (12 Hours)","depth":27,"help_text":"12 Hours","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Custom (1d)","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom (1d)","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Compare (Off)","depth":26,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Compare","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Off","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Time zone UTC timezone","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"UTC timezone","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start tailing with selected log group (opens in a new tab)","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start tailing","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Query scope","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Query scope Log group name","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Log group name","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Select up to 50 log groups","depth":28,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show more chosen log groups","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Show more chosen log groups (+25)","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browse","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Log Groups","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"|","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Facets","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"|","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lookup tables","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Undo","depth":28,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":28,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Logs Insights QL","depth":29,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Query generator","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Query generator","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Saved and sample queries","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Query commands","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Run query","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Save","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"History","depth":27,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fetching results","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Estimated remaining time: 1 seconds","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Logs (2)","depth":25,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Logs","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Patterns (-)","depth":25,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Patterns","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Visualization","depth":25,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Visualization","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Logs (2)","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs (2)","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize results","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize results","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Investigate","depth":28,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Investigate","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Share results","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Share results","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Export results","depth":28,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Export results","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add to dashboard","depth":26,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Showing 2 of 2 records matched - Scanning...","depth":29,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"49,252,340 records (13.5 GB) scanned in 24.1s @ 2,039,856 records/s (571.4 MB/s)","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hide histogram","depth":26,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide histogram","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter table results","depth":25,"help_text":"","placeholder":"Filter table results (case insensitive)...","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2026-04-16T17:00:17.343Z","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.152Z","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {\"uuid\":\"822fa41b-afd3-43a9-a248-86b0e36f3131\",\"status\":\"Generated\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.343Z","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.152Z","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {\"uuid\":\"822fa41b-afd3-43a9-a248-86b0e36f3131\",\"status\":\"Generated\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fetching results : 67.34154144080435%","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudShell","depth":12,"help_text":"Open CloudShell","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudShell","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Feedback","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feedback","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"©","depth":12,"bounds":{"left":0.97986114,"top":0.0,"width":0.008333334,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":12,"bounds":{"left":0.98819447,"top":0.0,"width":0.011805534,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"bounds":{"left":1.0,"top":0.0,"width":-0.0076389313,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Amazon Web Services, Inc.","depth":12,"bounds":{"left":1.0,"top":0.0,"width":-0.011805534,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or its affiliates.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cookie preferences","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-86837134588927187
|
8808333429455958422
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)
PROD
Account ID: 4103-4619-5943
PROD
EC2 EC2
EC2
Elastic Container Service Elastic Container Service
Elastic Container Service
S3 S3
S3
CodeDeploy CodeDeploy
CodeDeploy
CloudWatch CloudWatch
CloudWatch
ElastiCache ElastiCache
ElastiCache
Aurora and RDS Aurora and RDS
Aurora and RDS
Amazon OpenSearch Service Amazon OpenSearch Service
Amazon OpenSearch Service
CloudFront CloudFront
CloudFront
MediaLive MediaLive
MediaLive
Open side navigation
CloudWatch
CloudWatch
Logs Insights
Logs Insights
Query definition
Query definition
Info : Query definition
5m (5 Minutes)
30m (30 Minutes)
1h (1 Hour)
3h (3 Hours)
12h (12 Hours)
Custom (1d)
Custom (1d)
Compare (Off)
Compare
(
Off
)
Time zone UTC timezone
UTC timezone
Start tailing with selected log group (opens in a new tab)
Start tailing
Query scope
Query scope Log group name
Log group name
Select up to 50 log groups
Show more chosen log groups
Show more chosen log groups (+25)
Browse
:
Log Groups
|
Facets
|
Lookup tables
Undo
Redo
Logs Insights QL
Query generator
Query generator
Fields
Saved and sample queries
Query commands
Run query
Cancel
Save
History
Fetching results
Estimated remaining time: 1 seconds
Logs (2)
Logs
(
2
)
Patterns (-)
Patterns
(
-
)
Visualization
Visualization
Logs (2)
Logs (2)
Summarize results
Summarize results
Investigate
Investigate
Share results
Share results
Export results
Export results
Add to dashboard
Showing 2 of 2 records matched - Scanning...
49,252,340 records (13.5 GB) scanned in 24.1s @ 2,039,856 records/s (571.4 MB/s)
Hide histogram
Hide histogram
Filter table results
2026-04-16T17:00:17.343Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.152Z
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.343Z
2026-04-16T17:00:17.152Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
410346195943:worker-analytics
Fetching results : 67.34154144080435%
CloudShell
CloudShell
Feedback
Feedback
©
2026
,
Amazon Web Services, Inc.
or its affiliates.
Privacy
Privacy
Terms
Terms
Cookie preferences...
|
41453
|
|
41455
|
880
|
31
|
2026-04-17T06:14:04.076232+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776406444076_m2.jpg...
|
Firefox
|
CloudWatch | us-east-2 — Work
|
1
|
us-east-2.console.aws.amazon.com/cloudwatch/home?r us-east-2.console.aws.amazon.com/cloudwatch/home?region=us-east-2#logsV2:logs-insights$3FqueryDetail$3D~(end~0~start~-86400~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2fd8fe2b34-1f65-47dd-9f3a-f6cd4b33924a*2f*20*0a*7c*20filter*20*40message*20not*20like*20*2fAnalytic*2f*20*7c*20filter*20*40message*20not*20like*20*2fTranscript*2f*0a*7c*20filter*20*40message*20not*20like*20*2fWebhook*2f*20*7c*20filter*20*40message*20not*20like*20*2fMeetingBot*2f*20*0a*7c*20limit*2010000~queryId~'0551e814-f51a-4339-8372-80d7ba4cef27~source~(~'worker~'worker-analytics~'worker-app~'worker-audio~'worker-calendar~'worker-conferences~'worker-crm-sync~'worker-default~'worker-delayed~'worker-dialers~'worker-dialers-fifo~'worker-download~'worker-emails~'worker-meeting-bot~'worker-nudges~'worker-processing-1~'worker-processing-2~'worker-processing-3~'worker-processing-4~'worker-processing-5~'worker-processing-delayed~'worker-softphone~'worker-video~'worker-video-app~'php~'php-app)~lang~'CWLI~logClass~'STANDARD~queryBy~'logGroupName)...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)
PROD
Account ID: 4103-4619-5943
PROD
EC2 EC2
EC2
Elastic Container Service Elastic Container Service
Elastic Container Service
S3 S3
S3
CodeDeploy CodeDeploy
CodeDeploy
CloudWatch CloudWatch
CloudWatch
ElastiCache ElastiCache
ElastiCache
Aurora and RDS Aurora and RDS
Aurora and RDS
Amazon OpenSearch Service Amazon OpenSearch Service
Amazon OpenSearch Service
CloudFront CloudFront
CloudFront
MediaLive MediaLive
MediaLive
Open side navigation
CloudWatch
CloudWatch
Logs Insights
Logs Insights
Query definition
Query definition
Info : Query definition
5m (5 Minutes)
30m (30 Minutes)
1h (1 Hour)
3h (3 Hours)
12h (12 Hours)
Custom (1d)
Custom (1d)
Compare (Off)
Compare
(
Off
)
Time zone UTC timezone
UTC timezone
Start tailing with selected log group (opens in a new tab)
Start tailing
Query scope
Query scope Log group name
Log group name
Select up to 50 log groups
Show more chosen log groups
Show more chosen log groups (+25)
Browse
:
Log Groups
|
Facets
|
Lookup tables
Undo
Redo
Logs Insights QL
Query generator
Query generator
Fields
Saved and sample queries
Query commands
Run query
Cancel
Save
History
Fetching results
Estimated remaining time: 2 seconds
Logs (2)
Logs
(
2
)
Patterns (-)
Patterns
(
-
)
Visualization
Visualization
Logs (2)
Logs (2)
Summarize results
Summarize results
Investigate
Investigate
Share results
Share results
Export results
Export results
Add to dashboard
Showing 2 of 2 records matched - Scanning...
47,898,529 records (13.1 GB) scanned in 23.3s @ 2,052,207 records/s (575.6 MB/s)
Hide histogram
Hide histogram
Filter table results
2026-04-16T17:00:17.343Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.152Z
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.343Z
2026-04-16T17:00:17.152Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
410346195943:worker-analytics
Fetching results : 67.34154144080435%
CloudShell
CloudShell
Feedback
Feedback
©
2026
,
Amazon Web Services, Inc.
or its affiliates.
Privacy
Privacy
Terms
Terms
Cookie preferences...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0,"top":0.045138888,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.015625,"top":0.05486111,"width":0.11875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.07361111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.015625,"top":0.083333336,"width":0.11171875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.10208333,"width":0.09375,"height":0.028472222},"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.015625,"top":0.11180556,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.13055556,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.14027777,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | us-east-2","depth":4,"bounds":{"left":0.0,"top":0.15902779,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"CloudWatch | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.16875,"width":0.0484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.16527778,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.1875,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.19722222,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.21597221,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Console Home | Console Home | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.22569445,"width":0.0875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.24583334,"width":0.08710937,"height":0.022222223},"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.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"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.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"AWS Console Home","depth":13,"bounds":{"left":0.09375,"top":0.047916666,"width":0.025390625,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Skip to Main Content","depth":13,"bounds":{"left":0.09335937,"top":0.047222223,"width":0.0015625,"height":0.0013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to Main Content","depth":14,"bounds":{"left":0.09414063,"top":0.047916666,"width":0.01953125,"height":0.045138888},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Amazon Q","depth":14,"bounds":{"left":0.11953125,"top":0.047916666,"width":0.01953125,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Services","depth":13,"bounds":{"left":0.1390625,"top":0.047916666,"width":0.01953125,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Search","depth":16,"bounds":{"left":0.15859374,"top":0.054166667,"width":0.2109375,"height":0.020833334},"role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Ask Amazon Q","depth":15,"bounds":{"left":0.35390624,"top":0.05625,"width":0.01171875,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Option+S]","depth":16,"bounds":{"left":0.32851562,"top":0.058333334,"width":0.02734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"CloudShell","depth":14,"bounds":{"left":0.78046876,"top":0.047916666,"width":0.01875,"height":0.033333335},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Notifications (none available)","depth":16,"bounds":{"left":0.7992188,"top":0.050694443,"width":0.01953125,"height":0.027777778},"help_text":"Notifications","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Help & support","depth":15,"bounds":{"left":0.81875,"top":0.047916666,"width":0.01953125,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Settings","depth":15,"bounds":{"left":0.8382813,"top":0.047916666,"width":0.01953125,"height":0.033333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"United States (Ohio)","depth":15,"bounds":{"left":0.8578125,"top":0.047916666,"width":0.06328125,"height":0.033333335},"value":"United States (Ohio)","help_text":"United States (Ohio)","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"United States (Ohio)","depth":17,"bounds":{"left":0.86445314,"top":0.059722222,"width":0.04375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"PROD","depth":15,"bounds":{"left":0.92109376,"top":0.047916666,"width":0.07890624,"height":0.033333335},"help_text":"Production_View_Only @ jiminny","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Account ID: 4103-4619-5943","depth":19,"bounds":{"left":0.92460936,"top":0.05,"width":0.06367187,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PROD","depth":18,"bounds":{"left":0.97929686,"top":0.065972224,"width":0.0125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"EC2 EC2","depth":16,"bounds":{"left":0.096875,"top":0.083333336,"width":0.023828125,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"EC2","depth":18,"bounds":{"left":0.109375,"top":0.088194445,"width":0.008203125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Elastic Container Service Elastic Container Service","depth":16,"bounds":{"left":0.12070312,"top":0.083333336,"width":0.06757812,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Elastic Container Service","depth":18,"bounds":{"left":0.13320312,"top":0.088194445,"width":0.051953126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"S3 S3","depth":16,"bounds":{"left":0.18828125,"top":0.083333336,"width":0.02109375,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"S3","depth":18,"bounds":{"left":0.20078126,"top":0.088194445,"width":0.00546875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CodeDeploy CodeDeploy","depth":16,"bounds":{"left":0.209375,"top":0.083333336,"width":0.04140625,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CodeDeploy","depth":18,"bounds":{"left":0.221875,"top":0.088194445,"width":0.02578125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudWatch CloudWatch","depth":16,"bounds":{"left":0.25078124,"top":0.083333336,"width":0.04140625,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch","depth":18,"bounds":{"left":0.26328126,"top":0.088194445,"width":0.02578125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"ElastiCache ElastiCache","depth":16,"bounds":{"left":0.2921875,"top":0.083333336,"width":0.03984375,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"ElastiCache","depth":18,"bounds":{"left":0.3046875,"top":0.088194445,"width":0.02421875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Aurora and RDS Aurora and RDS","depth":16,"bounds":{"left":0.33203125,"top":0.083333336,"width":0.048828125,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Aurora and RDS","depth":18,"bounds":{"left":0.34453124,"top":0.088194445,"width":0.033203125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Amazon OpenSearch Service Amazon OpenSearch Service","depth":16,"bounds":{"left":0.38085938,"top":0.083333336,"width":0.07421875,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Amazon OpenSearch Service","depth":18,"bounds":{"left":0.39335936,"top":0.088194445,"width":0.0609375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudFront CloudFront","depth":16,"bounds":{"left":0.45507812,"top":0.083333336,"width":0.039453126,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudFront","depth":18,"bounds":{"left":0.4675781,"top":0.088194445,"width":0.023828125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"MediaLive MediaLive","depth":16,"bounds":{"left":0.49453124,"top":0.083333336,"width":0.037109375,"height":0.019444445},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MediaLive","depth":18,"bounds":{"left":0.50703126,"top":0.088194445,"width":0.021484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Open side navigation","depth":13,"bounds":{"left":0.1,"top":0.108333334,"width":0.01171875,"height":0.020833334},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"CloudWatch","depth":14,"bounds":{"left":0.11640625,"top":0.11111111,"width":0.031640626,"height":0.015277778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch","depth":16,"bounds":{"left":0.1171875,"top":0.1125,"width":0.030078124,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Logs Insights","depth":14,"bounds":{"left":0.16054687,"top":0.11180556,"width":0.03359375,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Logs Insights","depth":16,"bounds":{"left":0.16054687,"top":0.1125,"width":0.03359375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Query definition","depth":26,"bounds":{"left":0.1125,"top":0.14513889,"width":0.059375,"height":0.017361112},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Query definition","depth":28,"bounds":{"left":0.10234375,"top":0.14513889,"width":0.06953125,"height":0.017361112},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXButton","text":"Info : Query definition","depth":27,"bounds":{"left":0.175,"top":0.15069444,"width":0.008984375,"height":0.010416667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"5m (5 Minutes)","depth":27,"bounds":{"left":0.66328126,"top":0.14652778,"width":0.014453125,"height":0.013888889},"help_text":"5 Minutes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"30m (30 Minutes)","depth":27,"bounds":{"left":0.68476564,"top":0.14652778,"width":0.017578125,"height":0.013888889},"help_text":"30 Minutes","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"1h (1 Hour)","depth":27,"bounds":{"left":0.7089844,"top":0.14652778,"width":0.012890625,"height":0.013888889},"help_text":"1 Hour","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"3h (3 Hours)","depth":27,"bounds":{"left":0.7285156,"top":0.14652778,"width":0.012890625,"height":0.013888889},"help_text":"3 Hours","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"12h (12 Hours)","depth":27,"bounds":{"left":0.7484375,"top":0.14652778,"width":0.015625,"height":0.013888889},"help_text":"12 Hours","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Custom (1d)","depth":27,"bounds":{"left":0.7710937,"top":0.14652778,"width":0.041015625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Custom (1d)","depth":29,"bounds":{"left":0.7710937,"top":0.14722222,"width":0.031640626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Compare (Off)","depth":26,"bounds":{"left":0.81875,"top":0.14305556,"width":0.0546875,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Compare","depth":27,"bounds":{"left":0.82734376,"top":0.14791666,"width":0.023046875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"bounds":{"left":0.8503906,"top":0.14791666,"width":0.003515625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Off","depth":27,"bounds":{"left":0.8539063,"top":0.14791666,"width":0.008984375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"bounds":{"left":0.8628906,"top":0.14791666,"width":0.001953125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Time zone UTC timezone","depth":26,"bounds":{"left":0.8761719,"top":0.14305556,"width":0.054296874,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"UTC timezone","depth":28,"bounds":{"left":0.88125,"top":0.14791666,"width":0.034765624,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Start tailing with selected log group (opens in a new tab)","depth":26,"bounds":{"left":0.9351562,"top":0.14305556,"width":0.056640625,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Start tailing","depth":27,"bounds":{"left":0.9515625,"top":0.14791666,"width":0.031640626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Query scope","depth":28,"bounds":{"left":0.10234375,"top":0.18402778,"width":0.03203125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Query scope Log group name","depth":27,"bounds":{"left":0.10234375,"top":0.20416667,"width":0.078125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Log group name","depth":29,"bounds":{"left":0.107421875,"top":0.20902778,"width":0.040625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Select up to 50 log groups","depth":28,"bounds":{"left":0.1875,"top":0.20416667,"width":0.6730469,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show more chosen log groups","depth":27,"bounds":{"left":0.18710938,"top":0.27083334,"width":0.0984375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Show more chosen log groups (+25)","depth":29,"bounds":{"left":0.19570312,"top":0.27291667,"width":0.0890625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Browse","depth":28,"bounds":{"left":0.8652344,"top":0.20763889,"width":0.01796875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":28,"bounds":{"left":0.88320315,"top":0.20763889,"width":0.001171875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Log Groups","depth":27,"bounds":{"left":0.8875,"top":0.20763889,"width":0.0296875,"height":0.0125},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"|","depth":27,"bounds":{"left":0.9203125,"top":0.20763889,"width":0.0015625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Facets","depth":27,"bounds":{"left":0.925,"top":0.20763889,"width":0.016015625,"height":0.0125},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"|","depth":27,"bounds":{"left":0.9441406,"top":0.20763889,"width":0.0015625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lookup tables","depth":27,"bounds":{"left":0.9488281,"top":0.20763889,"width":0.03671875,"height":0.0125},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Undo","depth":28,"bounds":{"left":0.9332031,"top":0.40555555,"width":0.0109375,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":28,"bounds":{"left":0.9472656,"top":0.40555555,"width":0.0109375,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Logs Insights QL","depth":29,"bounds":{"left":0.10898437,"top":0.43472221,"width":0.06796875,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Query generator","depth":26,"bounds":{"left":0.18007812,"top":0.43194443,"width":0.061328124,"height":0.028472222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Query generator","depth":28,"bounds":{"left":0.19414063,"top":0.43888888,"width":0.042578124,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fields","depth":28,"bounds":{"left":0.25390625,"top":0.43888888,"width":0.015234375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Saved and sample queries","depth":28,"bounds":{"left":0.28632814,"top":0.43888888,"width":0.06640625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Query commands","depth":28,"bounds":{"left":0.36992186,"top":0.43888888,"width":0.0453125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Run query","depth":27,"bounds":{"left":0.10234375,"top":0.46944445,"width":0.044140626,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Cancel","depth":27,"bounds":{"left":0.14960937,"top":0.46944445,"width":0.034375,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Save","depth":27,"bounds":{"left":0.18710938,"top":0.46944445,"width":0.02890625,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"History","depth":27,"bounds":{"left":0.29140624,"top":0.46944445,"width":0.036328126,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fetching results","depth":27,"bounds":{"left":0.10234375,"top":0.49791667,"width":0.0390625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Estimated remaining time: 2 seconds","depth":27,"bounds":{"left":0.10234375,"top":0.525,"width":0.07929687,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Logs (2)","depth":25,"bounds":{"left":0.09765625,"top":0.5541667,"width":0.033203125,"height":0.030555556},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Logs","depth":27,"bounds":{"left":0.10234375,"top":0.5625,"width":0.013671875,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"bounds":{"left":0.11757813,"top":0.5625,"width":0.00234375,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":27,"bounds":{"left":0.11992188,"top":0.5625,"width":0.003515625,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"bounds":{"left":0.1234375,"top":0.5625,"width":0.00234375,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Patterns (-)","depth":25,"bounds":{"left":0.1375,"top":0.5541667,"width":0.04296875,"height":0.030555556},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Patterns","depth":27,"bounds":{"left":0.1421875,"top":0.5625,"width":0.024609376,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(","depth":27,"bounds":{"left":0.16679688,"top":0.5625,"width":0.00390625,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"-","depth":27,"bounds":{"left":0.17070313,"top":0.5625,"width":0.002734375,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":")","depth":27,"bounds":{"left":0.1734375,"top":0.5625,"width":0.001953125,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Visualization","depth":25,"bounds":{"left":0.18710938,"top":0.5541667,"width":0.048046876,"height":0.030555556},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Visualization","depth":27,"bounds":{"left":0.19179687,"top":0.5625,"width":0.03828125,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Logs (2)","depth":26,"bounds":{"left":0.10195313,"top":0.59305555,"width":0.028125,"height":0.017361112},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs (2)","depth":27,"bounds":{"left":0.10195313,"top":0.59305555,"width":0.028125,"height":0.017361112},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize results","depth":26,"bounds":{"left":0.60234374,"top":0.58958334,"width":0.07304688,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize results","depth":27,"bounds":{"left":0.61875,"top":0.59444445,"width":0.048046876,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Investigate","depth":28,"bounds":{"left":0.6785156,"top":0.58958334,"width":0.062109374,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Investigate","depth":29,"bounds":{"left":0.69570315,"top":0.59444445,"width":0.028515626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Share results","depth":26,"bounds":{"left":0.74375,"top":0.58958334,"width":0.058984376,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Share results","depth":27,"bounds":{"left":0.7601563,"top":0.59444445,"width":0.033984374,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Export results","depth":28,"bounds":{"left":0.8058594,"top":0.58958334,"width":0.0609375,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Export results","depth":29,"bounds":{"left":0.8144531,"top":0.59444445,"width":0.0359375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add to dashboard","depth":26,"bounds":{"left":0.86992186,"top":0.58958334,"width":0.06367187,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Showing 2 of 2 records matched - Scanning...","depth":29,"bounds":{"left":0.46875,"top":0.62430555,"width":0.1203125,"height":0.014583333},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"47,898,529 records (13.1 GB) scanned in 23.3s @ 2,052,207 records/s (575.6 MB/s)","depth":29,"bounds":{"left":0.42617187,"top":0.63958335,"width":0.20546874,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Hide histogram","depth":26,"bounds":{"left":0.959375,"top":0.62291664,"width":0.03671875,"height":0.029861111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hide histogram","depth":27,"bounds":{"left":0.959375,"top":0.62430555,"width":0.0328125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Filter table results","depth":25,"bounds":{"left":0.09882812,"top":0.7270833,"width":0.253125,"height":0.022222223},"help_text":"","placeholder":"Filter table results (case insensitive)...","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"2026-04-16T17:00:17.343Z","depth":29,"bounds":{"left":0.11757813,"top":0.79375,"width":0.06757812,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"bounds":{"left":0.19414063,"top":0.79375,"width":0.309375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"bounds":{"left":0.6046875,"top":0.79375,"width":0.16601562,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"bounds":{"left":0.8,"top":0.79375,"width":0.08164062,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.152Z","depth":29,"bounds":{"left":0.11757813,"top":0.8125,"width":0.06757812,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {\"uuid\":\"822fa41b-afd3-43a9-a248-86b0e36f3131\",\"status\":\"Generated\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"bounds":{"left":0.19414063,"top":0.8125,"width":0.69453126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"bounds":{"left":0.6046875,"top":0.8125,"width":0.16601562,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"bounds":{"left":0.8,"top":0.8125,"width":0.08164062,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.343Z","depth":29,"bounds":{"left":0.11757813,"top":0.79375,"width":0.06757812,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026-04-16T17:00:17.152Z","depth":29,"bounds":{"left":0.11757813,"top":0.8125,"width":0.06757812,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"bounds":{"left":0.19414063,"top":0.79375,"width":0.309375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {\"uuid\":\"822fa41b-afd3-43a9-a248-86b0e36f3131\",\"status\":\"Generated\"} {\"correlation_id\":\"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a\",\"trace_id\":\"e3aa1b87-319a-4d90-ad48-fa80bffb301e\"}","depth":29,"bounds":{"left":0.19414063,"top":0.8125,"width":0.69453126,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"bounds":{"left":0.6046875,"top":0.79375,"width":0.16601562,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab","depth":29,"bounds":{"left":0.6046875,"top":0.8125,"width":0.16601562,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"bounds":{"left":0.8,"top":0.79375,"width":0.08164062,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"410346195943:worker-analytics","depth":29,"bounds":{"left":0.8,"top":0.8125,"width":0.08164062,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Fetching results : 67.34154144080435%","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"CloudShell","depth":12,"bounds":{"left":0.1,"top":0.98125,"width":0.03125,"height":0.013888889},"help_text":"Open CloudShell","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudShell","depth":14,"bounds":{"left":0.10820313,"top":0.98333335,"width":0.023046875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Feedback","depth":11,"bounds":{"left":0.14101562,"top":0.98333335,"width":0.019921875,"height":0.009722223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feedback","depth":13,"bounds":{"left":0.14101562,"top":0.98333335,"width":0.019921875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"©","depth":12,"bounds":{"left":0.784375,"top":0.98333335,"width":0.0046875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":12,"bounds":{"left":0.7890625,"top":0.98333335,"width":0.0109375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":",","depth":12,"bounds":{"left":0.8,"top":0.98333335,"width":0.00234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Amazon Web Services, Inc.","depth":12,"bounds":{"left":0.8023437,"top":0.98333335,"width":0.05625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"or its affiliates.","depth":12,"bounds":{"left":0.85976565,"top":0.98333335,"width":0.031640626,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":13,"bounds":{"left":0.903125,"top":0.9826389,"width":0.016796876,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":14,"bounds":{"left":0.9039062,"top":0.98333335,"width":0.015234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":13,"bounds":{"left":0.9296875,"top":0.9826389,"width":0.014453125,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":14,"bounds":{"left":0.93046874,"top":0.98333335,"width":0.012890625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cookie preferences","depth":13,"bounds":{"left":0.95390624,"top":0.98333335,"width":0.040234376,"height":0.009722223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-8184406355141671939
|
8808329443105550774
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
New Tab
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
CloudWatch | us-east-2
CloudWatch | us-east-2
Close tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | eu-west-1
Console Home | Console Home | eu-west-1
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
AWS Console Home
Skip to Main Content
Skip to Main Content
Amazon Q
Services
Search
Ask Amazon Q
[Option+S]
CloudShell
Notifications (none available)
Help & support
Settings
United States (Ohio)
United States (Ohio)
PROD
Account ID: 4103-4619-5943
PROD
EC2 EC2
EC2
Elastic Container Service Elastic Container Service
Elastic Container Service
S3 S3
S3
CodeDeploy CodeDeploy
CodeDeploy
CloudWatch CloudWatch
CloudWatch
ElastiCache ElastiCache
ElastiCache
Aurora and RDS Aurora and RDS
Aurora and RDS
Amazon OpenSearch Service Amazon OpenSearch Service
Amazon OpenSearch Service
CloudFront CloudFront
CloudFront
MediaLive MediaLive
MediaLive
Open side navigation
CloudWatch
CloudWatch
Logs Insights
Logs Insights
Query definition
Query definition
Info : Query definition
5m (5 Minutes)
30m (30 Minutes)
1h (1 Hour)
3h (3 Hours)
12h (12 Hours)
Custom (1d)
Custom (1d)
Compare (Off)
Compare
(
Off
)
Time zone UTC timezone
UTC timezone
Start tailing with selected log group (opens in a new tab)
Start tailing
Query scope
Query scope Log group name
Log group name
Select up to 50 log groups
Show more chosen log groups
Show more chosen log groups (+25)
Browse
:
Log Groups
|
Facets
|
Lookup tables
Undo
Redo
Logs Insights QL
Query generator
Query generator
Fields
Saved and sample queries
Query commands
Run query
Cancel
Save
History
Fetching results
Estimated remaining time: 2 seconds
Logs (2)
Logs
(
2
)
Patterns (-)
Patterns
(
-
)
Visualization
Visualization
Logs (2)
Logs (2)
Summarize results
Summarize results
Investigate
Investigate
Share results
Share results
Export results
Export results
Add to dashboard
Showing 2 of 2 records matched - Scanning...
47,898,529 records (13.1 GB) scanned in 23.3s @ 2,052,207 records/s (575.6 MB/s)
Hide histogram
Hide histogram
Filter table results
2026-04-16T17:00:17.343Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.152Z
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
2026-04-16T17:00:17.343Z
2026-04-16T17:00:17.152Z
"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
[2026-04-16 17:00:17] production.INFO: [Send Report] Processing report {"uuid":"822fa41b-afd3-43a9-a248-86b0e36f3131","status":"Generated"} {"correlation_id":"d8fe2b34-1f65-47dd-9f3a-f6cd4b33924a","trace_id":"e3aa1b87-319a-4d90-ad48-fa80bffb301e"}
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
worker-analytics/worker-analytics/fb554dc84d6140c2ad7f217bbc19b409 Opens in a new tab
410346195943:worker-analytics
410346195943:worker-analytics
Fetching results : 67.34154144080435%
CloudShell
CloudShell
Feedback
Feedback
©
2026
,
Amazon Web Services, Inc.
or its affiliates.
Privacy
Privacy
Terms
Terms
Cookie preferences...
|
NULL
|