|
22728
|
977
|
0
|
2026-05-12T07:19:29.625325+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778570369625_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
https://ws.planhat.com
https://app-eu3.planh Today
https://ws.planhat.com
https://app-eu3.planhat.com/
playbackVisited
MM:SS
utlizes
payload
паълоад
interest
tracking
трацкинг
activity
used during
усед дуринг
rematching...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://ws.planhat.com","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.04886968,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://app-eu3.planhat.com/","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.06216755,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"playbackVisited","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.034242023,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MM:SS","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.016123671,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"utlizes","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.014793883,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"payload","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.017952127,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"паълоад","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.019614361,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"interest","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.016954787,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"tracking","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.018284574,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"трацкинг","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.020777926,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"activity","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.016456118,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"used during","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.026097074,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"усед дуринг","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.027759308,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"rematching","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.024601065,"height":0.014365523},"on_screen":false,"role_description":"text"}]...
|
3424815032963986977
|
-3242564641969684795
|
visual_change
|
accessibility
|
NULL
|
Today
https://ws.planhat.com
https://app-eu3.planh Today
https://ws.planhat.com
https://app-eu3.planhat.com/
playbackVisited
MM:SS
utlizes
payload
паълоад
interest
tracking
трацкинг
activity
used during
усед дуринг
rematching...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
1762
|
78
|
17
|
2026-05-07T10:12:17.013101+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778148737013_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
getOpportunityById
executeRequest
DeleteCrmE Today
getOpportunityById
executeRequest
DeleteCrmEntityTrait
[30, 90, 180]
DetachActivityObject
RematchActivityOnCrmObjectDetach
MatchActivityCrmData
RateLimitAwareWrapper
RateLimitAware
searchCallByRecordingURLToken
bulkAddPlaybackURLToDescriptionRequest
return new Response(429, [], '{}');
rateLimiter
Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…
executeRequest
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
14
Words
1
Times copied
2
Last copied
Today at 13:12:17
First copied
Today at 13:12:07
All Types
Paste to PhpStorm
...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"getOpportunityById","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.042054523,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"executeRequest","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.034574468,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DeleteCrmEntityTrait","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.044215426,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[30, 90, 180]","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.027593086,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DetachActivityObject","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.04537899,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"RematchActivityOnCrmObjectDetach","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":30,"bounds":{"left":0.69348407,"top":0.6687949,"width":0.07155382,"height":0.014365523}},{"char_start":30,"char_count":2,"bounds":{"left":0.69348407,"top":0.6831604,"width":0.005091014,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"MatchActivityCrmData","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.048204787,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAwareWrapper","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.051030584,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitAware","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.033410903,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"searchCallByRecordingURLToken","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.0703125,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"bulkAddPlaybackURLToDescriptionRequest","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"return new Response(429, [], '{}');","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.07280585,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"rateLimiter","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.023603724,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.07480053,"height":0.014365523},"on_screen":false},{"role":"AXTextArea","text":"executeRequest","depth":2,"bounds":{"left":0.7762633,"top":0.481245,"width":0.14660904,"height":0.15403032},"on_screen":true,"value":"executeRequest","role_description":"text entry area","is_focused":false},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.7769282,"top":0.6560255,"width":0.023603724,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.7769282,"top":0.679569,"width":0.01512633,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"PhpStorm","depth":5,"bounds":{"left":0.9019282,"top":0.679569,"width":0.020279255,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Content type","depth":5,"bounds":{"left":0.7769282,"top":0.7019154,"width":0.026595745,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Text (Formatted)","depth":5,"bounds":{"left":0.88896275,"top":0.7019154,"width":0.03324468,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Characters","depth":5,"bounds":{"left":0.7769282,"top":0.72426176,"width":0.022772606,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"14","depth":5,"bounds":{"left":0.9165558,"top":0.72426176,"width":0.0056515955,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Words","depth":5,"bounds":{"left":0.7769282,"top":0.74660814,"width":0.013796543,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":5,"bounds":{"left":0.91921544,"top":0.74660814,"width":0.0029920214,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Times copied","depth":5,"bounds":{"left":0.7769282,"top":0.7689545,"width":0.027593086,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":5,"bounds":{"left":0.9183843,"top":0.7689545,"width":0.0038231383,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Last copied","depth":5,"bounds":{"left":0.7769282,"top":0.7913009,"width":0.023936171,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Today at 13:12:17","depth":5,"bounds":{"left":0.88863033,"top":0.7913009,"width":0.03357713,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"First copied","depth":5,"bounds":{"left":0.7769282,"top":0.8136473,"width":0.024268618,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Today at 13:12:07","depth":5,"bounds":{"left":0.8877992,"top":0.8136473,"width":0.034408245,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"All Types","depth":1,"bounds":{"left":0.85638297,"top":0.4365523,"width":0.065159574,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Paste to PhpStorm","depth":1,"bounds":{"left":0.8312833,"top":0.78332,"width":0.037400264,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.8706782,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"}]...
|
5427017747761026752
|
7568360139959312563
|
click
|
accessibility
|
NULL
|
Today
getOpportunityById
executeRequest
DeleteCrmE Today
getOpportunityById
executeRequest
DeleteCrmEntityTrait
[30, 90, 180]
DetachActivityObject
RematchActivityOnCrmObjectDetach
MatchActivityCrmData
RateLimitAwareWrapper
RateLimitAware
searchCallByRecordingURLToken
bulkAddPlaybackURLToDescriptionRequest
return new Response(429, [], '{}');
rateLimiter
Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…
executeRequest
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
14
Words
1
Times copied
2
Last copied
Today at 13:12:17
First copied
Today at 13:12:07
All Types
Paste to PhpStorm
...
|
1760
|
NULL
|
NULL
|
NULL
|
|
4704
|
172
|
3
|
2026-05-07T14:22:37.480640+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778163757480_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
[2026-05-07 14:21:15] local.INFO: [Hubspot] Today
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:21:15 GMT"],"Content-Type":["application/json;charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"CF-Ray":["9f80deb8db60dc3a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin, accept-encoding"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\", cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab","trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:21:15 GMT"],"Content-Type":["application/json;charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"CF-Ray":["9f80deb8db60dc3a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin, accept-encoding"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\", cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab","trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
1446
Words
186
Times copied
2
Last copied
Today at 17:22:37
First copied
Today at 17:21:29
All Types
Paste to Claude

↵
Actions

⌘

K
Clipboard History...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\"headers\":{\"Date\":[\"Thu, 07 May 2026 14:21:15 GMT\"],\"Content-Type\":[\"application/json;charset=utf-8\"],\"Transfer-Encoding\":[\"chunked\"],\"Connection\":[\"keep-alive\"],\"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\"CF-Cache-Status\":[\"DYNAMIC\"],\"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\"Vary\":[\"origin, accept-encoding\"],\"access-control-allow-credentials\":[\"false\"],\"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\", cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\"x-content-type-options\":[\"nosniff\"],\"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\"Report-To\":[\"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"NEL\":[\"{\\\"success_fraction\\\":0.01,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"Server\":[\"cloudflare\"]}} {\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.07480053,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\"headers\":{\"Date\":[\"Thu, 07 May 2026 14:21:15 GMT\"],\"Content-Type\":[\"application/json;charset=utf-8\"],\"Transfer-Encoding\":[\"chunked\"],\"Connection\":[\"keep-alive\"],\"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\"CF-Cache-Status\":[\"DYNAMIC\"],\"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\"Vary\":[\"origin, accept-encoding\"],\"access-control-allow-credentials\":[\"false\"],\"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\", cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\"x-content-type-options\":[\"nosniff\"],\"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\"Report-To\":[\"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"NEL\":[\"{\\\"success_fraction\\\":0.01,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"Server\":[\"cloudflare\"]}} {\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","depth":2,"bounds":{"left":0.7762633,"top":0.481245,"width":0.14660904,"height":0.2905028},"on_screen":true,"lines":[{"char_start":0,"char_count":66,"bounds":{"left":0.77792555,"top":0.481245,"width":0.14328457,"height":0.011173184}},{"char_start":66,"char_count":62,"bounds":{"left":0.77792555,"top":0.4924182,"width":0.13603723,"height":0.011173184}},{"char_start":128,"char_count":61,"bounds":{"left":0.77792555,"top":0.50359136,"width":0.13384308,"height":0.011173184}},{"char_start":189,"char_count":49,"bounds":{"left":0.77792555,"top":0.51476455,"width":0.1075133,"height":0.011173184}},{"char_start":238,"char_count":63,"bounds":{"left":0.77792555,"top":0.52593774,"width":0.13823138,"height":0.011173184}},{"char_start":301,"char_count":59,"bounds":{"left":0.77792555,"top":0.5371109,"width":0.12945479,"height":0.011173184}},{"char_start":360,"char_count":61,"bounds":{"left":0.77792555,"top":0.5482841,"width":0.13384308,"height":0.011173184}},{"char_start":421,"char_count":45,"bounds":{"left":0.77792555,"top":0.5594573,"width":0.0987367,"height":0.011173184}},{"char_start":466,"char_count":54,"bounds":{"left":0.77792555,"top":0.5706305,"width":0.11848404,"height":0.011173184}},{"char_start":520,"char_count":61,"bounds":{"left":0.77792555,"top":0.5818037,"width":0.13384308,"height":0.011173184}}],"value":"[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {\"headers\":{\"Date\":[\"Thu, 07 May 2026 14:21:15 GMT\"],\"Content-Type\":[\"application/json;charset=utf-8\"],\"Transfer-Encoding\":[\"chunked\"],\"Connection\":[\"keep-alive\"],\"CF-Ray\":[\"9f80deb8db60dc3a-SOF\"],\"CF-Cache-Status\":[\"DYNAMIC\"],\"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\"Vary\":[\"origin, accept-encoding\"],\"access-control-allow-credentials\":[\"false\"],\"server-timing\":[\"hcid;desc=\\\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\\\", cfr;desc=\\\"9f80deb8e7c6dc3a-IAD\\\"\"],\"x-content-type-options\":[\"nosniff\"],\"x-hubspot-correlation-id\":[\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\"],\"Set-Cookie\":[\"__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-1.0.1.1-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\"Report-To\":[\"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"NEL\":[\"{\\\"success_fraction\\\":0.01,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"Server\":[\"cloudflare\"]}} {\"correlation_id\":\"95236535-ec98-4541-b92a-adfa73b69eab\",\"trace_id\":\"c7ab8365-903f-46d4-9403-0e5b551e3545\"}","role_description":"text entry area","is_focused":false},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.7769282,"top":0.6560255,"width":0.023603724,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.7769282,"top":0.679569,"width":0.01512633,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"PhpStorm","depth":5,"bounds":{"left":0.9019282,"top":0.679569,"width":0.020279255,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Content type","depth":5,"bounds":{"left":0.7769282,"top":0.7019154,"width":0.026595745,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Text (Formatted)","depth":5,"bounds":{"left":0.88896275,"top":0.7019154,"width":0.03324468,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Characters","depth":5,"bounds":{"left":0.7769282,"top":0.72426176,"width":0.022772606,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1446","depth":5,"bounds":{"left":0.91140294,"top":0.72426176,"width":0.010804521,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Words","depth":5,"bounds":{"left":0.7769282,"top":0.74660814,"width":0.013796543,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"186","depth":5,"bounds":{"left":0.9140625,"top":0.74660814,"width":0.008144947,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Times copied","depth":5,"bounds":{"left":0.7769282,"top":0.7689545,"width":0.027593086,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":5,"bounds":{"left":0.9183843,"top":0.7689545,"width":0.0038231383,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Last copied","depth":5,"bounds":{"left":0.7769282,"top":0.7913009,"width":0.023936171,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Today at 17:22:37","depth":5,"bounds":{"left":0.88730055,"top":0.7913009,"width":0.034906916,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"First copied","depth":5,"bounds":{"left":0.7769282,"top":0.8136473,"width":0.024268618,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Today at 17:21:29","depth":5,"bounds":{"left":0.88796544,"top":0.8136473,"width":0.034242023,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"All Types","depth":1,"bounds":{"left":0.85638297,"top":0.4365523,"width":0.065159574,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Paste to Claude","depth":1,"bounds":{"left":0.83693486,"top":0.78332,"width":0.03174867,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.8706782,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"↵","depth":2,"bounds":{"left":0.8713431,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Actions","depth":1,"bounds":{"left":0.88730055,"top":0.78332,"width":0.016123671,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.9054189,"top":0.7793296,"width":0.009474734,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘","depth":2,"bounds":{"left":0.90608376,"top":0.7793296,"width":0.008144947,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.91422874,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"K","depth":2,"bounds":{"left":0.9148936,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Clipboard History","depth":1,"bounds":{"left":0.69082445,"top":0.78332,"width":0.034906916,"height":0.011971269},"on_screen":true,"role_description":"text"}]...
|
1393427896497528968
|
6766717002385071075
|
visual_change
|
accessibility
|
NULL
|
Today
[2026-05-07 14:21:15] local.INFO: [Hubspot] Today
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:21:15 GMT"],"Content-Type":["application/json;charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"CF-Ray":["9f80deb8db60dc3a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin, accept-encoding"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\", cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab","trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
[2026-05-07 14:21:15] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:21:15 GMT"],"Content-Type":["application/json;charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"CF-Ray":["9f80deb8db60dc3a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin, accept-encoding"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02d0-6fd8-7812-bdba-885b7ccb3ee3\", cfr;desc=\"9f80deb8e7c6dc3a-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02d0-6fd8-7812-bdba-885b7ccb3ee3"],"Set-Cookie":["__cf_bm=SIUrtdQgXVrik50pdqF6hZVYKhzTnQBidvMabeCtm0Y-1778163675-[IP_ADDRESS]-rI.ZggtDKxTge5zr8_2gbBfWMQQ.ufZEXDZyHz2mBUFdzdo2gTHEsOkXMSEShjK0hGYxNhUGM1ZoBpX7BcFZcHEjA7Cs_.SMUhUnd2nYjko; path=/; expires=Thu, 07-May-26 14:51:15 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=NYAlsVTP0fYm32qrSDjxYE4sd2RWRqiSp3wHsmdEgZlzoYdxI%2BIxVpHmsKn3O%2BKVA3mFIJ2m7YRECDGSM%2BW2IYTzo6FM4%2BdUIjURO8srzKSvJgZ%2BQ6R79arKQw3uHLlX\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"95236535-ec98-4541-b92a-adfa73b69eab","trace_id":"c7ab8365-903f-46d4-9403-0e5b551e3545"}
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
1446
Words
186
Times copied
2
Last copied
Today at 17:22:37
First copied
Today at 17:21:29
All Types
Paste to Claude

↵
Actions

⌘

K
Clipboard History...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
4624
|
168
|
20
|
2026-05-07T14:15:04.887027+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778163304887_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
[2026-05-07 14:08:35] local.INFO: [Hubspot] Today
[2026-05-07 14:08:35] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:08:35 GMT"],"Content-Type":["application/json;charset=utf-8"],"Content-Length":["227"],"Connection":["keep-alive"],"CF-Ray":["9f80cc29fd66dc1a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02c4-d684-7f5d-be16-3d129d00c0a3\", cfr;desc=\"9f80cc2a06d23402-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02c4-d684-7f5d-be16-3d129d00c0a3"],"Set-Cookie":["__cf_bm=0LMCTstVmP5pyIYfLZ1Vgebevm4BnI_hv250XvZJDZI-1778162915-[IP_ADDRESS]-VEXAxU7TqgaJhUSJaNRDF5y59Eo7wOLd78Bm1nV_hNpBHZQPCrg.WMJL_LJy2qoR84rCgLXAlUPz4jkFWtD3fDjrRxypSlr4zAPvuPPaoNM; path=/; expires=Thu, 07-May-26 14:38:35 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=4wbdllfukF%2BA1EOwyTeqZCIqvY2KcW%2BCX5f%2BaZsnWkxc6ccKufGimFrCvj%2FnyWTDpsdCMXE0ngrpMA7WjiyvJDXtlDtN2YAhtK127%2FDtKe1JCyjgKsMQXBSMhBDyTC7c\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"d326aafa-339a-42c1-bf53-05ebd7f52782","trace_id":"19b29b52-6663-4853-8096-e32bf6618df7"}...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"[2026-05-07 14:08:35] local.INFO: [Hubspot] DEBUG Getting headers {\"headers\":{\"Date\":[\"Thu, 07 May 2026 14:08:35 GMT\"],\"Content-Type\":[\"application/json;charset=utf-8\"],\"Content-Length\":[\"227\"],\"Connection\":[\"keep-alive\"],\"CF-Ray\":[\"9f80cc29fd66dc1a-SOF\"],\"CF-Cache-Status\":[\"DYNAMIC\"],\"Strict-Transport-Security\":[\"max-age=31536000; includeSubDomains; preload\"],\"Vary\":[\"origin\"],\"access-control-allow-credentials\":[\"false\"],\"server-timing\":[\"hcid;desc=\\\"019e02c4-d684-7f5d-be16-3d129d00c0a3\\\", cfr;desc=\\\"9f80cc2a06d23402-IAD\\\"\"],\"x-content-type-options\":[\"nosniff\"],\"x-hubspot-correlation-id\":[\"019e02c4-d684-7f5d-be16-3d129d00c0a3\"],\"Set-Cookie\":[\"__cf_bm=0LMCTstVmP5pyIYfLZ1Vgebevm4BnI_hv250XvZJDZI-1778162915-1.0.1.1-VEXAxU7TqgaJhUSJaNRDF5y59Eo7wOLd78Bm1nV_hNpBHZQPCrg.WMJL_LJy2qoR84rCgLXAlUPz4jkFWtD3fDjrRxypSlr4zAPvuPPaoNM; path=/; expires=Thu, 07-May-26 14:38:35 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None\"],\"Report-To\":[\"{\\\"endpoints\\\":[{\\\"url\\\":\\\"https:\\\\/\\\\/a.nel.cloudflare.com\\\\/report\\\\/v4?s=4wbdllfukF%2BA1EOwyTeqZCIqvY2KcW%2BCX5f%2BaZsnWkxc6ccKufGimFrCvj%2FnyWTDpsdCMXE0ngrpMA7WjiyvJDXtlDtN2YAhtK127%2FDtKe1JCyjgKsMQXBSMhBDyTC7c\\\"}],\\\"group\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"NEL\":[\"{\\\"success_fraction\\\":0.01,\\\"report_to\\\":\\\"cf-nel\\\",\\\"max_age\\\":604800}\"],\"Server\":[\"cloudflare\"]}} {\"correlation_id\":\"d326aafa-339a-42c1-bf53-05ebd7f52782\",\"trace_id\":\"19b29b52-6663-4853-8096-e32bf6618df7\"}","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.07480053,"height":0.014365523},"on_screen":true,"role_description":"text"}]...
|
-7105568440889818564
|
5653659077958386545
|
visual_change
|
accessibility
|
NULL
|
Today
[2026-05-07 14:08:35] local.INFO: [Hubspot] Today
[2026-05-07 14:08:35] local.INFO: [Hubspot] DEBUG Getting headers {"headers":{"Date":["Thu, 07 May 2026 14:08:35 GMT"],"Content-Type":["application/json;charset=utf-8"],"Content-Length":["227"],"Connection":["keep-alive"],"CF-Ray":["9f80cc29fd66dc1a-SOF"],"CF-Cache-Status":["DYNAMIC"],"Strict-Transport-Security":["max-age=31536000; includeSubDomains; preload"],"Vary":["origin"],"access-control-allow-credentials":["false"],"server-timing":["hcid;desc=\"019e02c4-d684-7f5d-be16-3d129d00c0a3\", cfr;desc=\"9f80cc2a06d23402-IAD\""],"x-content-type-options":["nosniff"],"x-hubspot-correlation-id":["019e02c4-d684-7f5d-be16-3d129d00c0a3"],"Set-Cookie":["__cf_bm=0LMCTstVmP5pyIYfLZ1Vgebevm4BnI_hv250XvZJDZI-1778162915-[IP_ADDRESS]-VEXAxU7TqgaJhUSJaNRDF5y59Eo7wOLd78Bm1nV_hNpBHZQPCrg.WMJL_LJy2qoR84rCgLXAlUPz4jkFWtD3fDjrRxypSlr4zAPvuPPaoNM; path=/; expires=Thu, 07-May-26 14:38:35 GMT; domain=.hubapi.com; HttpOnly; Secure; SameSite=None"],"Report-To":["{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=4wbdllfukF%2BA1EOwyTeqZCIqvY2KcW%2BCX5f%2BaZsnWkxc6ccKufGimFrCvj%2FnyWTDpsdCMXE0ngrpMA7WjiyvJDXtlDtN2YAhtK127%2FDtKe1JCyjgKsMQXBSMhBDyTC7c\"}],\"group\":\"cf-nel\",\"max_age\":604800}"],"NEL":["{\"success_fraction\":0.01,\"report_to\":\"cf-nel\",\"max_age\":604800}"],"Server":["cloudflare"]}} {"correlation_id":"d326aafa-339a-42c1-bf53-05ebd7f52782","trace_id":"19b29b52-6663-4853-8096-e32bf6618df7"}...
|
4619
|
NULL
|
NULL
|
NULL
|
|
14230
|
632
|
18
|
2026-05-09T17:06:34.763737+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778346394763_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
Image (599x109)
[URL_WITH_CREDENTIALS] ~/Dow Today
Image (599x109)
[URL_WITH_CREDENTIALS] ~/Downloads $ curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w "%{http_code}" https://finance-hub.lakylak.xyz/api/payments…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
Information
Source
Firefox
Content type
Image
Dimensions
599x109
Image size
50 KB
Copied
Today at 20:06:07
All Types
Paste to Firefox

↵
Actions

⌘

K
Clipboard History...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image (599x109)","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.036901597,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://finance-mcp.lakylak.xyz/mcp","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":16,"bounds":{"left":0.69348407,"top":0.54110134,"width":0.032253314,"height":0.014365523}},{"char_start":16,"char_count":19,"bounds":{"left":0.69348407,"top":0.5554669,"width":0.04379698,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Image (1265x819)","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.03856383,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s https://finance-mcp.lakylak.xyz/.well-known/oauth-authorization-server | python3 -m json.tool…","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":29,"bounds":{"left":0.69348407,"top":0.6049481,"width":0.06966988,"height":0.014365523}},{"char_start":29,"char_count":34,"bounds":{"left":0.69348407,"top":0.61931366,"width":0.07347074,"height":0.014365523}},{"char_start":63,"char_count":16,"bounds":{"left":0.69348407,"top":0.63367915,"width":0.032253314,"height":0.014365523}},{"char_start":79,"char_count":28,"bounds":{"left":0.69348407,"top":0.6480447,"width":0.06141507,"height":0.014365523}},{"char_start":107,"char_count":29,"bounds":{"left":0.69348407,"top":0.6624102,"width":0.060082976,"height":0.014365523}},{"char_start":136,"char_count":21,"bounds":{"left":0.69348407,"top":0.67677575,"width":0.046794616,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"curl -s https://finance-mcp.lakylak.xyz/.well-known/oauth-authorization-server | python3 -m json.tool","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":24,"bounds":{"left":0.69348407,"top":0.6368715,"width":0.04698509,"height":0.014365523}},{"char_start":24,"char_count":28,"bounds":{"left":0.69348407,"top":0.651237,"width":0.06141507,"height":0.014365523}},{"char_start":52,"char_count":29,"bounds":{"left":0.69348407,"top":0.66560256,"width":0.060082976,"height":0.014365523}},{"char_start":81,"char_count":20,"bounds":{"left":0.69348407,"top":0.67996806,"width":0.043026213,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"finance-mcp.lakylak.xyz","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.052027926,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"212.5.153.87","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.026595745,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.69348407,"top":0.73264164,"width":0.060088236,"height":0.014365523}},{"char_start":27,"char_count":12,"bounds":{"left":0.69348407,"top":0.7470072,"width":0.0290478,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Finance Hub MCP","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.03873005,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"http://localhost","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.03274601,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://claude.ai/api/organizations/[your-org-id]/mcp/oauth_redirect","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"https://claude.ai/api/mcp/auth_callback","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"finance-hub-mcp","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.037732713,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"https://auth.lakylak.xyz/if/admin/","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.06948138,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"The MCP server is already configured correctly — claude_desktop_config.example.json has FINANCE_HUB_URL: http://localhost:3001, which hits the backend directly.…","depth":5,"bounds":{"left":0.6928192,"top":0.95610535,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":0.9880287,"width":0.07480053,"height":0.011971295},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.019952059},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w \"%{http_code}\" https://finance-hub.lakylak.xyz/api/payments…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.051875472},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.083798885},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.7769282,"top":0.6560255,"width":0.023603724,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.7769282,"top":0.679569,"width":0.01512633,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Firefox","depth":5,"bounds":{"left":0.9075798,"top":0.679569,"width":0.01462766,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Content type","depth":5,"bounds":{"left":0.7769282,"top":0.7019154,"width":0.026595745,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image","depth":5,"bounds":{"left":0.9090758,"top":0.7019154,"width":0.013131649,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Dimensions","depth":5,"bounds":{"left":0.7769282,"top":0.72426176,"width":0.024102394,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"599x109","depth":5,"bounds":{"left":0.90392286,"top":0.72426176,"width":0.018284574,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image size","depth":5,"bounds":{"left":0.7769282,"top":0.74660814,"width":0.022107713,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"50 KB","depth":5,"bounds":{"left":0.90924203,"top":0.74660814,"width":0.012965426,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Copied","depth":5,"bounds":{"left":0.7769282,"top":0.7689545,"width":0.015292553,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Today at 20:06:07","depth":5,"bounds":{"left":0.8859708,"top":0.7689545,"width":0.036236703,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"All Types","depth":1,"bounds":{"left":0.85638297,"top":0.4365523,"width":0.065159574,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Paste to Firefox","depth":1,"bounds":{"left":0.83710104,"top":0.78332,"width":0.03158245,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.8706782,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"↵","depth":2,"bounds":{"left":0.8713431,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Actions","depth":1,"bounds":{"left":0.88730055,"top":0.78332,"width":0.016123671,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.9054189,"top":0.7793296,"width":0.009474734,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘","depth":2,"bounds":{"left":0.90608376,"top":0.7793296,"width":0.008144947,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.91422874,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"K","depth":2,"bounds":{"left":0.9148936,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Clipboard History","depth":1,"bounds":{"left":0.69082445,"top":0.78332,"width":0.034906916,"height":0.011971269},"on_screen":true,"role_description":"text"}]...
|
-1523006487360674764
|
5231001933702855709
|
visual_change
|
accessibility
|
NULL
|
Today
Image (599x109)
[URL_WITH_CREDENTIALS] ~/Dow Today
Image (599x109)
[URL_WITH_CREDENTIALS] ~/Downloads $ curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w "%{http_code}" https://finance-hub.lakylak.xyz/api/payments…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
Information
Source
Firefox
Content type
Image
Dimensions
599x109
Image size
50 KB
Copied
Today at 20:06:07
All Types
Paste to Firefox

↵
Actions

⌘

K
Clipboard History...
|
14228
|
NULL
|
NULL
|
NULL
|
|
2441
|
104
|
33
|
2026-05-07T11:18:17.694543+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152697694_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
Image (1150x618)
https://api.hubapi.com/acco Today
Image (1150x618)
https://api.hubapi.com/account-info/v3/details
https://api.hubapi.com/account-info/v3/api-usage/daily/private-apps
https://api.hubapi.com/account-info/v3/detail
Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image (1150x618)","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.037732713,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/details","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.54110134,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":15,"bounds":{"left":0.69348407,"top":0.5554669,"width":0.029778501,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/api-usage/daily/private-apps","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.57302475,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":32,"bounds":{"left":0.69348407,"top":0.58739024,"width":0.066070326,"height":0.014365523}},{"char_start":63,"char_count":4,"bounds":{"left":0.69348407,"top":0.6017558,"width":0.010133492,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/detail","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.6049481,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":14,"bounds":{"left":0.69348407,"top":0.61931366,"width":0.027464068,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.07480053,"height":0.014365523},"on_screen":true}]...
|
7894064927038312960
|
6597248997804524416
|
visual_change
|
accessibility
|
NULL
|
Today
Image (1150x618)
https://api.hubapi.com/acco Today
Image (1150x618)
https://api.hubapi.com/account-info/v3/details
https://api.hubapi.com/account-info/v3/api-usage/daily/private-apps
https://api.hubapi.com/account-info/v3/detail
Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2442
|
104
|
34
|
2026-05-07T11:18:20.414817+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152700414_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
Image (1150x618)
[URL_WITH_CREDENTIALS] ~/ji Today
Image (1150x618)
[URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git fetch origin…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ sp-start…
app/Services/Crm/Hubspot/Client
app/Services/Crm/Hubspot/Client.php:621
private function executeRequest(callable $apiCall)…
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image (1150x618)","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.037732713,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/details","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.54110134,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":15,"bounds":{"left":0.69348407,"top":0.5554669,"width":0.029778501,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/api-usage/daily/private-apps","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.57302475,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":32,"bounds":{"left":0.69348407,"top":0.58739024,"width":0.066070326,"height":0.014365523}},{"char_start":63,"char_count":4,"bounds":{"left":0.69348407,"top":0.6017558,"width":0.010133492,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"https://api.hubapi.com/account-info/v3/detail","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.6049481,"width":0.06691073,"height":0.014365523}},{"char_start":31,"char_count":14,"bounds":{"left":0.69348407,"top":0.61931366,"width":0.027464068,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response:…","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":28,"bounds":{"left":0.69348407,"top":0.6368715,"width":0.05513494,"height":0.014365523}},{"char_start":28,"char_count":30,"bounds":{"left":0.69348407,"top":0.651237,"width":0.06657572,"height":0.014365523}},{"char_start":58,"char_count":35,"bounds":{"left":0.69348407,"top":0.66560256,"width":0.07149003,"height":0.014365523}},{"char_start":93,"char_count":29,"bounds":{"left":0.69348407,"top":0.67996806,"width":0.06771156,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"API usage guidelines and limits - HubSpot docs","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":34,"bounds":{"left":0.69348407,"top":0.6687949,"width":0.06881896,"height":0.014365523}},{"char_start":34,"char_count":12,"bounds":{"left":0.69348407,"top":0.6831604,"width":0.029440308,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Image (1625x828)","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.03939495,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":5,"bounds":{"left":0.6821808,"top":0.73423785,"width":0.020777926,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://github.com/screenpipe/screenpipe","depth":5,"bounds":{"left":0.6928192,"top":0.7613727,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":19,"bounds":{"left":0.69348407,"top":0.7613727,"width":0.03971363,"height":0.014365523}},{"char_start":19,"char_count":21,"bounds":{"left":0.69348407,"top":0.77573824,"width":0.047769554,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"This Year","depth":5,"bounds":{"left":0.6821808,"top":0.79489225,"width":0.019614361,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Оправих flanky тестове който fail-ваха и двата PR-а могат да се деплойват https://github.com/jiminny/app/pull/12011 и https://github.com/jiminny/app/pull/12016","depth":5,"bounds":{"left":0.6928192,"top":0.82202715,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12016","depth":5,"bounds":{"left":0.6928192,"top":0.8539505,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/12011","depth":5,"bounds":{"left":0.6928192,"top":0.8858739,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git fetch origin…","depth":5,"bounds":{"left":0.6928192,"top":0.91779727,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ sp-start…","depth":5,"bounds":{"left":0.6928192,"top":0.9497207,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app/Services/Crm/Hubspot/Client","depth":5,"bounds":{"left":0.6928192,"top":0.98164403,"width":0.07180851,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"app/Services/Crm/Hubspot/Client.php:621","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.013567448},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"private function executeRequest(callable $apiCall)…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.04549086},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.077414155},"on_screen":false,"role_description":"text"}]...
|
-7596123220321702372
|
8035833180152423491
|
visual_change
|
accessibility
|
NULL
|
Today
Image (1150x618)
[URL_WITH_CREDENTIALS] ~/ji Today
Image (1150x618)
[URL_WITH_CREDENTIALS] ~/jiminny/app (JY-20157-AJ-report-not-send-notification) $ git fetch origin…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20372-ai-reports-promotion-pages) $ sp-start…
app/Services/Crm/Hubspot/Client
app/Services/Crm/Hubspot/Client.php:621
private function executeRequest(callable $apiCall)…
https://developers.hubspot.com/docs/developer-tooling/platform/usage-guidelines...
|
2441
|
NULL
|
NULL
|
NULL
|
|
9480
|
428
|
20
|
2026-05-08T12:55:14.704257+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778244914704_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
A. The "Infinite Accumulation" Memor Today
A. The "Infinite Accumulation" Memory Leak…
Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…
shouldSkipActivity
Image (1316x1070)
DocumentLoad
You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.
captureException
Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…
public function matchExactlyByEmail(string $email, ?int $userId = null): ?array…
CachedCrmServiceDecorator
Image (1616x834)
Image (1611x834)
HandleHubspotRateLimit ⚠️ release() never consumes $tries — no circuit-breaker for persistent rate limits…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A. The \"Infinite Accumulation\" Memory Leak…","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.509178,"width":0.06375801,"height":0.014365523}},{"char_start":31,"char_count":12,"bounds":{"left":0.69348407,"top":0.5235435,"width":0.032078132,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":36,"bounds":{"left":0.69348407,"top":0.54110134,"width":0.07246655,"height":0.014365523}},{"char_start":36,"char_count":34,"bounds":{"left":0.69348407,"top":0.5554669,"width":0.07023283,"height":0.014365523}},{"char_start":70,"char_count":33,"bounds":{"left":0.69348407,"top":0.5698324,"width":0.0711703,"height":0.014365523}},{"char_start":103,"char_count":31,"bounds":{"left":0.69348407,"top":0.58419794,"width":0.062177423,"height":0.014365523}},{"char_start":134,"char_count":34,"bounds":{"left":0.69348407,"top":0.59856343,"width":0.06779126,"height":0.014365523}},{"char_start":168,"char_count":32,"bounds":{"left":0.69348407,"top":0.612929,"width":0.063808136,"height":0.014365523}},{"char_start":200,"char_count":33,"bounds":{"left":0.69348407,"top":0.6272945,"width":0.06763984,"height":0.014365523}},{"char_start":233,"char_count":33,"bounds":{"left":0.69348407,"top":0.64166003,"width":0.06799015,"height":0.014365523}},{"char_start":266,"char_count":28,"bounds":{"left":0.69348407,"top":0.6560255,"width":0.059676215,"height":0.014365523}},{"char_start":294,"char_count":9,"bounds":{"left":0.69348407,"top":0.6703911,"width":0.020283345,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"shouldSkipActivity","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.039727394,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image (1316x1070)","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.040059842,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"DocumentLoad","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.032912236,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.6687949,"width":0.068959795,"height":0.014365523}},{"char_start":31,"char_count":34,"bounds":{"left":0.69348407,"top":0.6831604,"width":0.06948369,"height":0.014365523}},{"char_start":65,"char_count":32,"bounds":{"left":0.69348407,"top":0.6975259,"width":0.07159921,"height":0.014365523}},{"char_start":97,"char_count":26,"bounds":{"left":0.69348407,"top":0.7118915,"width":0.054606304,"height":0.014365523}},{"char_start":123,"char_count":37,"bounds":{"left":0.69348407,"top":0.72625697,"width":0.07347074,"height":0.014365523}},{"char_start":160,"char_count":26,"bounds":{"left":0.69348407,"top":0.7406225,"width":0.051780667,"height":0.014365523}},{"char_start":186,"char_count":26,"bounds":{"left":0.69348407,"top":0.754988,"width":0.052363098,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"captureException","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.037732713,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":32,"bounds":{"left":0.69348407,"top":0.73264164,"width":0.066059776,"height":0.014365523}},{"char_start":32,"char_count":33,"bounds":{"left":0.69348407,"top":0.7470072,"width":0.06367045,"height":0.014365523}},{"char_start":65,"char_count":26,"bounds":{"left":0.69348407,"top":0.7613727,"width":0.05555381,"height":0.014365523}},{"char_start":91,"char_count":25,"bounds":{"left":0.69348407,"top":0.77573824,"width":0.05161448,"height":0.014365523}},{"char_start":116,"char_count":11,"bounds":{"left":0.69348407,"top":0.79010373,"width":0.023787446,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"public function matchExactlyByEmail(string $email, ?int $userId = null): ?array…","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":16,"bounds":{"left":0.69348407,"top":0.76456505,"width":0.032156244,"height":0.014365523}},{"char_start":16,"char_count":27,"bounds":{"left":0.69348407,"top":0.77893054,"width":0.05890438,"height":0.014365523}},{"char_start":43,"char_count":31,"bounds":{"left":0.69348407,"top":0.7932961,"width":0.059898343,"height":0.014365523}},{"char_start":74,"char_count":6,"bounds":{"left":0.69348407,"top":0.8076616,"width":0.014156715,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"CachedCrmServiceDecorator","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.0625,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Image (1616x834)","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.03873005,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Image (1611x834)","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.037732713,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HandleHubspotRateLimit\t⚠️\trelease() never consumes $tries — no circuit-breaker for persistent rate limits…","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"}]...
|
-5611920876631183705
|
8116999363647890207
|
visual_change
|
accessibility
|
NULL
|
Today
A. The "Infinite Accumulation" Memor Today
A. The "Infinite Accumulation" Memory Leak…
Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…
shouldSkipActivity
Image (1316x1070)
DocumentLoad
You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.
captureException
Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…
public function matchExactlyByEmail(string $email, ?int $userId = null): ?array…
CachedCrmServiceDecorator
Image (1616x834)
Image (1611x834)
HandleHubspotRateLimit ⚠️ release() never consumes $tries — no circuit-breaker for persistent rate limits…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
14158
|
630
|
28
|
2026-05-09T17:02:06.408896+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778346126408_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
[IP_ADDRESS]
finance-mcp.lakylak.xyz
cd /vol Today
[IP_ADDRESS]
finance-mcp.lakylak.xyz
cd /volume2/docker/finance/finance-hub…
Finance Hub MCP
[URL_WITH_CREDENTIALS] ~/Downloads $ curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w "%{http_code}" https://finance-hub.lakylak.xyz/api/payments…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s https://finance-hub.lakylak.xyz/api/health...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"212.5.153.87","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.026595745,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance-mcp.lakylak.xyz","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.052027926,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.69348407,"top":0.57302475,"width":0.060088236,"height":0.014365523}},{"char_start":27,"char_count":12,"bounds":{"left":0.69348407,"top":0.58739024,"width":0.0290478,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"Finance Hub MCP","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.03873005,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"http://localhost","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.03274601,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://claude.ai/api/organizations/[your-org-id]/mcp/oauth_redirect","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":36,"bounds":{"left":0.69348407,"top":0.6687949,"width":0.07246023,"height":0.014365523}},{"char_start":36,"char_count":32,"bounds":{"left":0.69348407,"top":0.6831604,"width":0.06907323,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"https://claude.ai/api/mcp/auth_callback","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":26,"bounds":{"left":0.69348407,"top":0.7007183,"width":0.05350475,"height":0.014365523}},{"char_start":26,"char_count":13,"bounds":{"left":0.69348407,"top":0.7150838,"width":0.028342454,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"finance-hub-mcp","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.037732713,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"https://auth.lakylak.xyz/if/admin/","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.06948138,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"The MCP server is already configured correctly — claude_desktop_config.example.json has FINANCE_HUB_URL: http://localhost:3001, which hits the backend directly.…","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":26,"bounds":{"left":0.69348407,"top":0.7964884,"width":0.056056052,"height":0.014365523}},{"char_start":26,"char_count":23,"bounds":{"left":0.69348407,"top":0.81085396,"width":0.04912963,"height":0.014365523}},{"char_start":49,"char_count":32,"bounds":{"left":0.69348407,"top":0.82521945,"width":0.07103366,"height":0.014365523}},{"char_start":81,"char_count":31,"bounds":{"left":0.69348407,"top":0.839585,"width":0.07118823,"height":0.014365523}},{"char_start":112,"char_count":31,"bounds":{"left":0.69348407,"top":0.8539505,"width":0.06263535,"height":0.014365523}},{"char_start":143,"char_count":18,"bounds":{"left":0.69348407,"top":0.86831605,"width":0.03933008,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w \"%{http_code}\" https://finance-hub.lakylak.xyz/api/payments…","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -H \"Authorization: Bearer 94bb2917b9a1b9dcbaec49e7009c2a6b222fc310d32f530aa07e411e8d4a058c\" \\…","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"curl -s https://finance-hub.lakylak.xyz/api/health","depth":5,"bounds":{"left":0.6928192,"top":0.95610535,"width":0.07480053,"height":0.014365523},"on_screen":false,"role_description":"text"}]...
|
-8153784968009707139
|
5194975473127237661
|
click
|
accessibility
|
NULL
|
Today
[IP_ADDRESS]
finance-mcp.lakylak.xyz
cd /vol Today
[IP_ADDRESS]
finance-mcp.lakylak.xyz
cd /volume2/docker/finance/finance-hub…
Finance Hub MCP
[URL_WITH_CREDENTIALS] ~/Downloads $ curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ curl -s -o /dev/null -w "%{http_code}" https://finance-hub.lakylak.xyz/api/payments…
curl -s -H "Authorization: [AUTH_TOKEN]" \…
curl -s https://finance-hub.lakylak.xyz/api/health...
|
14156
|
NULL
|
NULL
|
NULL
|
|
11544
|
518
|
34
|
2026-05-09T06:37:33.106257+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778308653106_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
[IP_ADDRESS]
finance-hub
Yesterday
5175
/fin Today
[IP_ADDRESS]
finance-hub
Yesterday
5175
/finance-hub.lakylak.xyz
Three separate answers below:…
cd /volume2/docker/finance/finance-hub…
/ingest
payment-logger and dsk-uploader.
/volume2/docker/
http://[IP_ADDRESS]:8050
docker compose up -d --build
http://[IP_ADDRESS]:5174...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"212.5.153.87","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.026595745,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance-hub","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.026761968,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":5,"bounds":{"left":0.6821808,"top":0.5746209,"width":0.020777926,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5175","depth":5,"bounds":{"left":0.6928192,"top":0.6017558,"width":0.010970744,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.6928192,"top":0.63367915,"width":0.052526597,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Three separate answers below:…","depth":5,"bounds":{"left":0.6928192,"top":0.66560256,"width":0.0703125,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.6928192,"top":0.6975259,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.69348407,"top":0.6975259,"width":0.060088236,"height":0.014365523}},{"char_start":27,"char_count":12,"bounds":{"left":0.69348407,"top":0.7118915,"width":0.0290478,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"/ingest","depth":5,"bounds":{"left":0.6928192,"top":0.72944933,"width":0.015625,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"payment-logger and dsk-uploader.","depth":5,"bounds":{"left":0.6928192,"top":0.7613727,"width":0.07347074,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/volume2/docker/","depth":5,"bounds":{"left":0.6928192,"top":0.7932961,"width":0.038065158,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"http://192.168.0.242:8050","depth":5,"bounds":{"left":0.6928192,"top":0.82521945,"width":0.054521278,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"docker compose up -d --build","depth":5,"bounds":{"left":0.6928192,"top":0.85714287,"width":0.06399601,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"http://192.168.0.242:5174","depth":5,"bounds":{"left":0.6928192,"top":0.8890662,"width":0.053025264,"height":0.014365523},"on_screen":false,"role_description":"text"}]...
|
-2923555884812365569
|
-8930633520727097241
|
visual_change
|
accessibility
|
NULL
|
Today
[IP_ADDRESS]
finance-hub
Yesterday
5175
/fin Today
[IP_ADDRESS]
finance-hub
Yesterday
5175
/finance-hub.lakylak.xyz
Three separate answers below:…
cd /volume2/docker/finance/finance-hub…
/ingest
payment-logger and dsk-uploader.
/volume2/docker/
http://[IP_ADDRESS]:8050
docker compose up -d --build
http://[IP_ADDRESS]:5174...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
2312
|
102
|
14
|
2026-05-07T11:10:31.630217+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778152231630_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
1499
full-refresh
Information
Source
PhpStor Today
1499
full-refresh
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
12
Words
2
Times copied
6
Last copied
Today at 14:10:31
First copied
17 Apr 2026 at 13:47:47
All Types
Paste to PhpStorm

↵
Actions

⌘

K
Clipboard History...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1499","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.011469414,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXTextArea","text":"full-refresh","depth":2,"bounds":{"left":0.7762633,"top":0.481245,"width":0.14660904,"height":0.15403032},"on_screen":true,"value":"full-refresh","role_description":"text entry area","is_focused":false},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.7769282,"top":0.6560255,"width":0.023603724,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.7769282,"top":0.679569,"width":0.01512633,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"PhpStorm","depth":5,"bounds":{"left":0.9019282,"top":0.679569,"width":0.020279255,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Content type","depth":5,"bounds":{"left":0.7769282,"top":0.7019154,"width":0.026595745,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Text (Formatted)","depth":5,"bounds":{"left":0.88896275,"top":0.7019154,"width":0.03324468,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Characters","depth":5,"bounds":{"left":0.7769282,"top":0.72426176,"width":0.022772606,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"12","depth":5,"bounds":{"left":0.91672206,"top":0.72426176,"width":0.005485372,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Words","depth":5,"bounds":{"left":0.7769282,"top":0.74660814,"width":0.013796543,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":5,"bounds":{"left":0.9183843,"top":0.74660814,"width":0.0038231383,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Times copied","depth":5,"bounds":{"left":0.7769282,"top":0.7689545,"width":0.027593086,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"6","depth":5,"bounds":{"left":0.9182181,"top":0.7689545,"width":0.0039893617,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Last copied","depth":5,"bounds":{"left":0.7769282,"top":0.7913009,"width":0.023936171,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Today at 14:10:31","depth":5,"bounds":{"left":0.8881317,"top":0.7913009,"width":0.034075797,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"First copied","depth":5,"bounds":{"left":0.7769282,"top":0.8136473,"width":0.024268618,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"17 Apr 2026 at 13:47:47","depth":5,"bounds":{"left":0.8756649,"top":0.8136473,"width":0.04654255,"height":0.011971269},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"All Types","depth":1,"bounds":{"left":0.85638297,"top":0.4365523,"width":0.065159574,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Paste to PhpStorm","depth":1,"bounds":{"left":0.8312833,"top":0.78332,"width":0.037400264,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.8706782,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"↵","depth":2,"bounds":{"left":0.8713431,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Actions","depth":1,"bounds":{"left":0.88730055,"top":0.78332,"width":0.016123671,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.9054189,"top":0.7793296,"width":0.009474734,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘","depth":2,"bounds":{"left":0.90608376,"top":0.7793296,"width":0.008144947,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.91422874,"top":0.7793296,"width":0.00930851,"height":0.019952115},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"K","depth":2,"bounds":{"left":0.9148936,"top":0.7793296,"width":0.007978723,"height":0.019952115},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Clipboard History","depth":1,"bounds":{"left":0.69082445,"top":0.78332,"width":0.034906916,"height":0.011971269},"on_screen":true,"role_description":"text"}]...
|
-2937453257177557861
|
-2604781207138157957
|
click
|
accessibility
|
NULL
|
Today
1499
full-refresh
Information
Source
PhpStor Today
1499
full-refresh
Information
Source
PhpStorm
Content type
Text (Formatted)
Characters
12
Words
2
Times copied
6
Last copied
Today at 14:10:31
First copied
17 Apr 2026 at 13:47:47
All Types
Paste to PhpStorm

↵
Actions

⌘

K
Clipboard History...
|
2310
|
NULL
|
NULL
|
NULL
|
|
3179
|
124
|
5
|
2026-05-07T12:05:27.661523+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778155527661_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
$this->getNewInstance()->crm()->dea Today
$this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId
$this->client->getOpportunityById($params['crm_id'], $fields);
374720564
374720564
$crmService
$team = Team::find(19);…
rateLimit
$deal
makeRequest
21351
374720564
$body
$interval
$remaining
$max
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"…
$max = $response->header('X-HubSpot-RateLimit-Max');…
/**…
374720564
Information
Source...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$this->getNewInstance()->crm()->deals()->basicApi()->getById(","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":31,"bounds":{"left":0.69348407,"top":0.509178,"width":0.068741366,"height":0.014365523}},{"char_start":31,"char_count":30,"bounds":{"left":0.69348407,"top":0.5235435,"width":0.063991696,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"$crmId","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.016123671,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$this->client->getOpportunityById($params['crm_id'], $fields);","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":14,"bounds":{"left":0.69348407,"top":0.57302475,"width":0.02757854,"height":0.014365523}},{"char_start":14,"char_count":31,"bounds":{"left":0.69348407,"top":0.58739024,"width":0.070449635,"height":0.014365523}},{"char_start":45,"char_count":17,"bounds":{"left":0.69348407,"top":0.6017558,"width":0.03228656,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"374720564","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.025265958,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"374720564","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.025265958,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$crmService","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.027925532,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$team = Team::find(19);…","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.0546875,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"rateLimit","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.019448139,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$deal","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.012965426,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"makeRequest","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.029421542,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"21351","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.012965426,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"374720564","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.025265958,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$body","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.01462766,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$interval","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.019614361,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$remaining","depth":5,"bounds":{"left":0.6928192,"top":0.95610535,"width":0.024601065,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$max","depth":5,"bounds":{"left":0.6928192,"top":0.9880287,"width":0.012965426,"height":0.011971295},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // \"110\"…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.019952059},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"$max = $response->header('X-HubSpot-RateLimit-Max');…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.07480053,"height":-0.051875472},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/**…","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.010638298,"height":-0.083798885},"on_screen":false,"role_description":"text"},{"role":"AXTextArea","text":"374720564","depth":2,"bounds":{"left":0.7762633,"top":0.481245,"width":0.14660904,"height":0.15403032},"on_screen":true,"value":"374720564","role_description":"text entry area","is_focused":false},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.7769282,"top":0.6560255,"width":0.023603724,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.7769282,"top":0.679569,"width":0.01512633,"height":0.011971269},"on_screen":true,"role_description":"text"}]...
|
-2505854514453640739
|
5355145341127266160
|
visual_change
|
accessibility
|
NULL
|
Today
$this->getNewInstance()->crm()->dea Today
$this->getNewInstance()->crm()->deals()->basicApi()->getById(
$crmId
$this->client->getOpportunityById($params['crm_id'], $fields);
374720564
374720564
$crmService
$team = Team::find(19);…
rateLimit
$deal
makeRequest
21351
374720564
$body
$interval
$remaining
$max
$max = $response->getHeaderLine('X-HubSpot-RateLimit-Max'); // "110"…
$max = $response->header('X-HubSpot-RateLimit-Max');…
/**…
374720564
Information
Source...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
21134
|
923
|
30
|
2026-05-11T17:14:50.797333+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778519690797_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
#!/bin/bash…
Issues…
/**…
public function se Today
#!/bin/bash…
Issues…
/**…
public function search(string $objectType, array $payload): array…
private function executeRequest(callable $apiCall)…
MatchActivityCrmDataTest
HubspotPaginationServiceTest
MatchActivityCrmDataTest
RateLimitException
executeRequest
HandleHubspotRateLimit
HandleHubspotRateLimit
MatchActivityCrmData
RuntimeException
RuntimeException
RateLimitException
MatchActivityCrmData
HubspotPaginationService
Jiminny\Services\Crm\Hubspot...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.6821808,"top":0.4820431,"width":0.013297873,"height":0.011971269},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"#!/bin/bash…","depth":5,"bounds":{"left":0.6928192,"top":0.509178,"width":0.028922873,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Issues…","depth":5,"bounds":{"left":0.6928192,"top":0.54110134,"width":0.018450798,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/**…","depth":5,"bounds":{"left":0.6928192,"top":0.57302475,"width":0.010638298,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"public function search(string $objectType, array $payload): array…","depth":5,"bounds":{"left":0.6928192,"top":0.6049481,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":30,"bounds":{"left":0.69348407,"top":0.6049481,"width":0.060903348,"height":0.014365523}},{"char_start":30,"char_count":30,"bounds":{"left":0.69348407,"top":0.61931366,"width":0.06370788,"height":0.014365523}},{"char_start":60,"char_count":6,"bounds":{"left":0.69348407,"top":0.63367915,"width":0.014156715,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"private function executeRequest(callable $apiCall)…","depth":5,"bounds":{"left":0.6928192,"top":0.6368715,"width":0.07480053,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":17,"bounds":{"left":0.69348407,"top":0.6368715,"width":0.033892464,"height":0.014365523}},{"char_start":17,"char_count":24,"bounds":{"left":0.69348407,"top":0.651237,"width":0.051986404,"height":0.014365523}},{"char_start":41,"char_count":10,"bounds":{"left":0.69348407,"top":0.66560256,"width":0.022213712,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"MatchActivityCrmDataTest","depth":5,"bounds":{"left":0.6928192,"top":0.6687949,"width":0.05668218,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"HubspotPaginationServiceTest","depth":5,"bounds":{"left":0.6928192,"top":0.7007183,"width":0.06499335,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"MatchActivityCrmDataTest","depth":5,"bounds":{"left":0.6928192,"top":0.73264164,"width":0.05668218,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitException","depth":5,"bounds":{"left":0.6928192,"top":0.76456505,"width":0.04089096,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"executeRequest","depth":5,"bounds":{"left":0.6928192,"top":0.7964884,"width":0.034574468,"height":0.014365523},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"HandleHubspotRateLimit","depth":5,"bounds":{"left":0.6928192,"top":0.8284118,"width":0.05269282,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HandleHubspotRateLimit","depth":5,"bounds":{"left":0.6928192,"top":0.8603352,"width":0.05269282,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MatchActivityCrmData","depth":5,"bounds":{"left":0.6928192,"top":0.8922586,"width":0.048204787,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RuntimeException","depth":5,"bounds":{"left":0.6928192,"top":0.92418194,"width":0.03873005,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RuntimeException","depth":5,"bounds":{"left":0.6928192,"top":0.95610535,"width":0.03873005,"height":0.014365523},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"RateLimitException","depth":5,"bounds":{"left":0.6928192,"top":0.9880287,"width":0.04089096,"height":0.011971295},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"MatchActivityCrmData","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.048204787,"height":-0.019952059},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"HubspotPaginationService","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.05651596,"height":-0.051875472},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Jiminny\\Services\\Crm\\Hubspot","depth":5,"bounds":{"left":0.6928192,"top":1.0,"width":0.065990694,"height":-0.083798885},"on_screen":false,"role_description":"text"}]...
|
4141865936365145156
|
-7836109472876631061
|
visual_change
|
accessibility
|
NULL
|
Today
#!/bin/bash…
Issues…
/**…
public function se Today
#!/bin/bash…
Issues…
/**…
public function search(string $objectType, array $payload): array…
private function executeRequest(callable $apiCall)…
MatchActivityCrmDataTest
HubspotPaginationServiceTest
MatchActivityCrmDataTest
RateLimitException
executeRequest
HandleHubspotRateLimit
HandleHubspotRateLimit
MatchActivityCrmData
RuntimeException
RuntimeException
RateLimitException
MatchActivityCrmData
HubspotPaginationService
Jiminny\Services\Crm\Hubspot...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
12041
|
535
|
12
|
2026-05-09T08:20:32.556159+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778314832556_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
curl -s -X POST [URL_WITH_CREDENTIALS] ~/Dow Today
curl -s -X POST [URL_WITH_CREDENTIALS] ~/Downloads $ ll…
backend-1 | [IP_ADDRESS] - - [09/May/2026:08:15:19 +0000] "POST /api/upload/csv HTTP/1.1" 422 166 "[URL_WITH_CREDENTIALS] curl -X POST [URL_WITH_CREDENTIALS] \
-F "files=@/path/to/report2.csv" | python3 -m json.tool
Information
Source
Code
Content type
Text (Formatted)
Characters
157
Words
24
Times copied
2
Last copied
Today at 11:19:49
First copied
Today at 11:16:53
f
All Types
Paste to iTerm2

↵
Actions

⌘

K
Clipboard History...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.48055556,"top":0.38555557,"width":0.027777778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -X POST http://192.168.0.242:3001/api/upload/preview \\…","depth":5,"bounds":{"left":0.50277776,"top":0.42333335,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":23,"bounds":{"left":0.50416666,"top":0.42333335,"width":0.09684292,"height":0.02}},{"char_start":23,"char_count":30,"bounds":{"left":0.50416666,"top":0.44333333,"width":0.13540615,"height":0.02}},{"char_start":53,"char_count":10,"bounds":{"left":0.50416666,"top":0.46333334,"width":0.04790073,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ ll…","depth":5,"bounds":{"left":0.50277776,"top":0.4677778,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":29,"bounds":{"left":0.50416666,"top":0.4677778,"width":0.14553264,"height":0.02}},{"char_start":29,"char_count":29,"bounds":{"left":0.50416666,"top":0.48777777,"width":0.13557474,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"backend-1 | 172.16.14.5 - - [09/May/2026:08:15:19 +0000] \"POST /api/upload/csv HTTP/1.1\" 422 166 \"https://finance-hub.lakylak.xyz/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:150.0) Gecko/20100101 Firefox/150.0\"…","depth":5,"bounds":{"left":0.50277776,"top":0.51222223,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":33,"bounds":{"left":0.50416666,"top":0.51222223,"width":0.13527066,"height":0.02}},{"char_start":33,"char_count":25,"bounds":{"left":0.50416666,"top":0.5322222,"width":0.11958652,"height":0.02}},{"char_start":58,"char_count":32,"bounds":{"left":0.50416666,"top":0.55222225,"width":0.14577623,"height":0.02}},{"char_start":90,"char_count":25,"bounds":{"left":0.50416666,"top":0.57222223,"width":0.10899387,"height":0.02}},{"char_start":115,"char_count":31,"bounds":{"left":0.50416666,"top":0.5922222,"width":0.13144219,"height":0.02}},{"char_start":146,"char_count":34,"bounds":{"left":0.50416666,"top":0.6122222,"width":0.14604737,"height":0.02}},{"char_start":180,"char_count":33,"bounds":{"left":0.50416666,"top":0.63222224,"width":0.14694329,"height":0.02}},{"char_start":213,"char_count":7,"bounds":{"left":0.50416666,"top":0.6522222,"width":0.03444607,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.50277776,"top":0.5566667,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.50416666,"top":0.5566667,"width":0.12551765,"height":0.02}},{"char_start":27,"char_count":12,"bounds":{"left":0.50416666,"top":0.57666665,"width":0.060677625,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"finance_hub","depth":5,"bounds":{"left":0.50277776,"top":0.6011111,"width":0.05590278,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance","depth":5,"bounds":{"left":0.50277776,"top":0.64555556,"width":0.035069443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.50277776,"top":0.69,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.50416666,"top":0.69,"width":0.12551765,"height":0.02}},{"char_start":27,"char_count":12,"bounds":{"left":0.50416666,"top":0.71,"width":0.060677625,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"Adm1n@DXP4800PLUS-B5F8:~$ curl -X POST https://finance-hub.lakylak.xyz/api/payments/ingest \\…","depth":5,"bounds":{"left":0.50277776,"top":0.73444444,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":26,"bounds":{"left":0.50416666,"top":0.73444444,"width":0.1465233,"height":0.02}},{"char_start":26,"char_count":29,"bounds":{"left":0.50416666,"top":0.7544444,"width":0.12640591,"height":0.02}},{"char_start":55,"char_count":29,"bounds":{"left":0.50416666,"top":0.77444446,"width":0.13225104,"height":0.02}},{"char_start":84,"char_count":9,"bounds":{"left":0.50416666,"top":0.79444444,"width":0.04025818,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.50277776,"top":0.7788889,"width":0.10625,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curl -X POST http://192.168.0.242:3001/api/payments/ingest \\…","depth":5,"bounds":{"left":0.50277776,"top":0.8233333,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":20,"bounds":{"left":0.50416666,"top":0.8233333,"width":0.08517795,"height":0.02}},{"char_start":20,"char_count":32,"bounds":{"left":0.50416666,"top":0.8433333,"width":0.1481566,"height":0.02}},{"char_start":52,"char_count":9,"bounds":{"left":0.50416666,"top":0.86333334,"width":0.04025818,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"/finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.50277776,"top":0.86777776,"width":0.10972222,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"finance-hub","depth":5,"bounds":{"left":0.50277776,"top":0.9122222,"width":0.05590278,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":5,"bounds":{"left":0.48055556,"top":0.9588889,"width":0.043402776,"height":0.016666668},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Three separate answers below:…","depth":5,"bounds":{"left":0.50277776,"top":0.99666667,"width":0.146875,"height":0.0033333302},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Let me do a thorough re-audit, including the Activity HubSpot Service and all remaining direct SDK calls.…","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.15625,"height":-0.04111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Complete Call List (All Files)…","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.13194445,"height":-0.08555555},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A. The \"Infinite Accumulation\" Memory Leak…","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Image (1316x1070)","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXTextArea","text":"curl -s -X POST http://192.168.0.242:3001/api/upload/preview \\\n -F \"files=@/path/to/report1.csv\" \\\n -F \"files=@/path/to/report2.csv\" | python3 -m json.tool","depth":2,"bounds":{"left":0.6770833,"top":0.38444445,"width":0.30625,"height":0.21444444},"on_screen":true,"lines":[{"char_start":0,"char_count":63,"bounds":{"left":0.6805556,"top":0.38444445,"width":0.29930556,"height":0.015555556}},{"char_start":63,"char_count":37,"bounds":{"left":0.6805556,"top":0.4,"width":0.29930556,"height":0.015555556}},{"char_start":100,"char_count":57,"bounds":{"left":0.6805556,"top":0.41555557,"width":0.26125,"height":0.015555556}}],"value":"curl -s -X POST http://192.168.0.242:3001/api/upload/preview \\\n -F \"files=@/path/to/report1.csv\" \\\n -F \"files=@/path/to/report2.csv\" | python3 -m json.tool","role_description":"text entry area","is_focused":false},{"role":"AXStaticText","text":"Information","depth":5,"bounds":{"left":0.6784722,"top":0.62777776,"width":0.049305554,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Source","depth":5,"bounds":{"left":0.6784722,"top":0.66055554,"width":0.031597223,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Code","depth":5,"bounds":{"left":0.95763886,"top":0.66055554,"width":0.024305556,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Content type","depth":5,"bounds":{"left":0.6784722,"top":0.69166666,"width":0.055555556,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Text (Formatted)","depth":5,"bounds":{"left":0.9125,"top":0.69166666,"width":0.06944445,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Characters","depth":5,"bounds":{"left":0.6784722,"top":0.7227778,"width":0.047569446,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"157","depth":5,"bounds":{"left":0.965625,"top":0.7227778,"width":0.016319444,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Words","depth":5,"bounds":{"left":0.6784722,"top":0.7538889,"width":0.028819444,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"24","depth":5,"bounds":{"left":0.9684028,"top":0.7538889,"width":0.013541667,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Times copied","depth":5,"bounds":{"left":0.6784722,"top":0.785,"width":0.057638887,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":5,"bounds":{"left":0.9739583,"top":0.785,"width":0.007986112,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Last copied","depth":5,"bounds":{"left":0.6784722,"top":0.8161111,"width":0.05,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Today at 11:19:49","depth":5,"bounds":{"left":0.9111111,"top":0.8161111,"width":0.07083333,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"First copied","depth":5,"bounds":{"left":0.6784722,"top":0.8472222,"width":0.050694443,"height":0.016666668},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Today at 11:16:53","depth":5,"bounds":{"left":0.9114583,"top":0.8472222,"width":0.07048611,"height":0.016666668},"on_screen":false,"role_description":"text"},{"role":"AXTextField","text":"f","depth":1,"bounds":{"left":0.50416666,"top":0.3288889,"width":0.33472222,"height":0.022222223},"on_screen":true,"value":"f","placeholder":"Type to filter entries…","role_description":"text field","subrole":"raycast_searchField","is_enabled":true,"is_focused":true},{"role":"AXButton","text":"All Types","depth":1,"bounds":{"left":0.84444445,"top":0.32222223,"width":0.13611111,"height":0.035555556},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false},{"role":"AXStaticText","text":"Paste to iTerm2","depth":1,"bounds":{"left":0.8041667,"top":0.805,"width":0.065972224,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.87430555,"top":0.79944444,"width":0.019444445,"height":0.027777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"↵","depth":2,"bounds":{"left":0.87569445,"top":0.79944444,"width":0.016666668,"height":0.027777778},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Actions","depth":1,"bounds":{"left":0.90902776,"top":0.805,"width":0.033680554,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.946875,"top":0.79944444,"width":0.019791666,"height":0.027777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"⌘","depth":2,"bounds":{"left":0.9482639,"top":0.79944444,"width":0.017013889,"height":0.027777778},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"","depth":1,"bounds":{"left":0.9652778,"top":0.79944444,"width":0.019444445,"height":0.027777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"K","depth":2,"bounds":{"left":0.96666664,"top":0.79944444,"width":0.016666668,"height":0.027777778},"on_screen":true,"role_description":"attached text","subrole":"AXTextAttachment"},{"role":"AXStaticText","text":"Clipboard History","depth":1,"bounds":{"left":0.49861112,"top":0.805,"width":0.072916664,"height":0.016666668},"on_screen":true,"role_description":"text"}]...
|
1123252695191263603
|
3864299494005732125
|
visual_change
|
accessibility
|
NULL
|
Today
curl -s -X POST [URL_WITH_CREDENTIALS] ~/Dow Today
curl -s -X POST [URL_WITH_CREDENTIALS] ~/Downloads $ ll…
backend-1 | [IP_ADDRESS] - - [09/May/2026:08:15:19 +0000] "POST /api/upload/csv HTTP/1.1" 422 166 "[URL_WITH_CREDENTIALS] curl -X POST [URL_WITH_CREDENTIALS] \
-F "files=@/path/to/report2.csv" | python3 -m json.tool
Information
Source
Code
Content type
Text (Formatted)
Characters
157
Words
24
Times copied
2
Last copied
Today at 11:19:49
First copied
Today at 11:16:53
f
All Types
Paste to iTerm2

↵
Actions

⌘

K
Clipboard History...
|
12039
|
NULL
|
NULL
|
NULL
|
|
11642
|
521
|
3
|
2026-05-09T06:44:40.770688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778309080770_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
curl -X POST http://[IP_ADDRESS]:3001/api/pa Today
curl -X POST http://[IP_ADDRESS]:3001/api/payments/ingest \…
finance-hub.lakylak.xyz
5175
/finance-hub.lakylak.xyz
[IP_ADDRESS]
finance-hub
Yesterday
Three separate answers below:…
cd /volume2/docker/finance/finance-hub…
/ingest
payment-logger and dsk-uploader.
/volume2/docker/
http://[IP_ADDRESS]:8050...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.48055556,"top":0.38555557,"width":0.027777778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curl -X POST http://192.168.0.242:3001/api/payments/ingest \\…","depth":5,"bounds":{"left":0.50277776,"top":0.42333335,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":20,"bounds":{"left":0.50416666,"top":0.42333335,"width":0.08517795,"height":0.02}},{"char_start":20,"char_count":32,"bounds":{"left":0.50416666,"top":0.44333333,"width":0.1481566,"height":0.02}},{"char_start":52,"char_count":9,"bounds":{"left":0.50416666,"top":0.46333334,"width":0.04025818,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.50277776,"top":0.4677778,"width":0.10625,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"5175","depth":5,"bounds":{"left":0.50277776,"top":0.51222223,"width":0.022916667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"/finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.50277776,"top":0.5566667,"width":0.10972222,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"212.5.153.87","depth":5,"bounds":{"left":0.50277776,"top":0.6011111,"width":0.055555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance-hub","depth":5,"bounds":{"left":0.50277776,"top":0.64555556,"width":0.05590278,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Yesterday","depth":5,"bounds":{"left":0.48055556,"top":0.69222224,"width":0.043402776,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Three separate answers below:…","depth":5,"bounds":{"left":0.50277776,"top":0.73,"width":0.146875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.50277776,"top":0.77444446,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.50416666,"top":0.77444446,"width":0.12551765,"height":0.02}},{"char_start":27,"char_count":12,"bounds":{"left":0.50416666,"top":0.79444444,"width":0.060677625,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"/ingest","depth":5,"bounds":{"left":0.50277776,"top":0.8188889,"width":0.03263889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"payment-logger and dsk-uploader.","depth":5,"bounds":{"left":0.50277776,"top":0.86333334,"width":0.15347221,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"/volume2/docker/","depth":5,"bounds":{"left":0.50277776,"top":0.9077778,"width":0.07951389,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"http://192.168.0.242:8050","depth":5,"bounds":{"left":0.50277776,"top":0.9522222,"width":0.11388889,"height":0.02},"on_screen":false,"role_description":"text"}]...
|
-1396885903340082968
|
-6621763547419561930
|
visual_change
|
accessibility
|
NULL
|
Today
curl -X POST http://[IP_ADDRESS]:3001/api/pa Today
curl -X POST http://[IP_ADDRESS]:3001/api/payments/ingest \…
finance-hub.lakylak.xyz
5175
/finance-hub.lakylak.xyz
[IP_ADDRESS]
finance-hub
Yesterday
Three separate answers below:…
cd /volume2/docker/finance/finance-hub…
/ingest
payment-logger and dsk-uploader.
/volume2/docker/
http://[IP_ADDRESS]:8050...
|
11641
|
NULL
|
NULL
|
NULL
|
|
12036
|
535
|
9
|
2026-05-09T08:19:46.833650+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778314786833_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
cat "report(1).csv"
lukas@Lukas-Kova Today
cat "report(1).csv"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ ll…
report(1).csv
curl -s -X POST [URL_WITH_CREDENTIALS] curl -X POST https://finance-hub.lakylak.xyz/api/payments/ingest \…
http://[IP_ADDRESS]:8090
finance-hub.lakylak.xyz...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.48055556,"top":0.38555557,"width":0.027777778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cat \"report(1).csv\"","depth":5,"bounds":{"left":0.50277776,"top":0.42333335,"width":0.08229167,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ ll…","depth":5,"bounds":{"left":0.50277776,"top":0.4677778,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":29,"bounds":{"left":0.50416666,"top":0.4677778,"width":0.14553264,"height":0.02}},{"char_start":29,"char_count":29,"bounds":{"left":0.50416666,"top":0.48777777,"width":0.13557474,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"report(1).csv","depth":5,"bounds":{"left":0.50277776,"top":0.51222223,"width":0.057638887,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"curl -s -X POST http://192.168.0.242:3001/api/upload/preview \\…","depth":5,"bounds":{"left":0.50277776,"top":0.5566667,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":23,"bounds":{"left":0.50416666,"top":0.5566667,"width":0.09684292,"height":0.02}},{"char_start":23,"char_count":30,"bounds":{"left":0.50416666,"top":0.57666665,"width":0.13540615,"height":0.02}},{"char_start":53,"char_count":10,"bounds":{"left":0.50416666,"top":0.5966667,"width":0.04790073,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"backend-1 | 172.16.14.5 - - [09/May/2026:08:15:19 +0000] \"POST /api/upload/csv HTTP/1.1\" 422 166 \"https://finance-hub.lakylak.xyz/\" \"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:150.0) Gecko/20100101 Firefox/150.0\"…","depth":5,"bounds":{"left":0.50277776,"top":0.6011111,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":33,"bounds":{"left":0.50416666,"top":0.6011111,"width":0.13527066,"height":0.02}},{"char_start":33,"char_count":25,"bounds":{"left":0.50416666,"top":0.6211111,"width":0.11958652,"height":0.02}},{"char_start":58,"char_count":32,"bounds":{"left":0.50416666,"top":0.64111114,"width":0.14577623,"height":0.02}},{"char_start":90,"char_count":25,"bounds":{"left":0.50416666,"top":0.6611111,"width":0.10899387,"height":0.02}},{"char_start":115,"char_count":31,"bounds":{"left":0.50416666,"top":0.6811111,"width":0.13144219,"height":0.02}},{"char_start":146,"char_count":34,"bounds":{"left":0.50416666,"top":0.70111114,"width":0.14604737,"height":0.02}},{"char_start":180,"char_count":33,"bounds":{"left":0.50416666,"top":0.7211111,"width":0.14694329,"height":0.02}},{"char_start":213,"char_count":7,"bounds":{"left":0.50416666,"top":0.7411111,"width":0.03444607,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"docker compose logs backend --tail=60","depth":5,"bounds":{"left":0.50277776,"top":0.64555556,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":30,"bounds":{"left":0.50416666,"top":0.64555556,"width":0.14412537,"height":0.02}},{"char_start":30,"char_count":7,"bounds":{"left":0.50416666,"top":0.66555554,"width":0.030192262,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.50277776,"top":0.69,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":27,"bounds":{"left":0.50416666,"top":0.69,"width":0.12551765,"height":0.02}},{"char_start":27,"char_count":12,"bounds":{"left":0.50416666,"top":0.71,"width":0.060677625,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"payments_secret","depth":5,"bounds":{"left":0.50277776,"top":0.73444444,"width":0.07638889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance_hub","depth":5,"bounds":{"left":0.50277776,"top":0.7788889,"width":0.05590278,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"finance","depth":5,"bounds":{"left":0.50277776,"top":0.8233333,"width":0.035069443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"8092","depth":5,"bounds":{"left":0.50277776,"top":0.86777776,"width":0.025694445,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"cd /volume2/docker/finance/finance-hub…","depth":5,"bounds":{"left":0.50277776,"top":0.9122222,"width":0.15625,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Adm1n@DXP4800PLUS-B5F8:~$ curl -X POST https://finance-hub.lakylak.xyz/api/payments/ingest \\…","depth":5,"bounds":{"left":0.50277776,"top":0.95666665,"width":0.15625,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"http://192.168.0.242:8090","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.11388889,"height":-0.0011111498},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"finance-hub.lakylak.xyz","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.10625,"height":-0.04555559},"on_screen":false,"role_description":"text"}]...
|
272584543399203005
|
-9023898850677691255
|
visual_change
|
accessibility
|
NULL
|
Today
cat "report(1).csv"
lukas@Lukas-Kova Today
cat "report(1).csv"
lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/Downloads $ ll…
report(1).csv
curl -s -X POST [URL_WITH_CREDENTIALS] curl -X POST https://finance-hub.lakylak.xyz/api/payments/ingest \…
http://[IP_ADDRESS]:8090
finance-hub.lakylak.xyz...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
10054
|
457
|
8
|
2026-05-08T14:08:58.665798+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778249338665_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
Complete Call List (All Files)…
doSearch()
d Today
Complete Call List (All Files)…
doSearch()
doSearch
Switch cursor() to lazyById(250). It preserves the single-loop, generator-style code in the new version while restoring proper batched eager loading (avoiding N+1 on getIndexableAttributes()) and releasing the DB connection between chunks (avoiding long-held PDO connections during ES/Sentry calls).
gemini
warrning
claude
цлауде
lazyByIdDesc(250)
chunkByIdDesc()
lazyById()
Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…
A. The "Infinite Accumulation" Memory Leak…
shouldSkipActivity
Image (1316x1070)
DocumentLoad
You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.
captureException
Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.48055556,"top":0.38555557,"width":0.027777778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Complete Call List (All Files)…","depth":5,"bounds":{"left":0.50277776,"top":0.42333335,"width":0.13194445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"doSearch()","depth":5,"bounds":{"left":0.50277776,"top":0.4677778,"width":0.051041666,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"doSearch","depth":5,"bounds":{"left":0.50277776,"top":0.51222223,"width":0.044444446,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Switch cursor() to lazyById(250). It preserves the single-loop, generator-style code in the new version while restoring proper batched eager loading (avoiding N+1 on getIndexableAttributes()) and releasing the DB connection between chunks (avoiding long-held PDO connections during ES/Sentry calls).","depth":5,"bounds":{"left":0.50277776,"top":0.5566667,"width":0.15625,"height":0.02},"on_screen":true,"lines":[{"char_start":0,"char_count":37,"bounds":{"left":0.50416666,"top":0.5566667,"width":0.15347221,"height":0.02}},{"char_start":37,"char_count":27,"bounds":{"left":0.50416666,"top":0.57666665,"width":0.116146035,"height":0.02}},{"char_start":64,"char_count":32,"bounds":{"left":0.50416666,"top":0.5966667,"width":0.14097582,"height":0.02}},{"char_start":96,"char_count":31,"bounds":{"left":0.50416666,"top":0.6166667,"width":0.13246046,"height":0.02}},{"char_start":127,"char_count":32,"bounds":{"left":0.50416666,"top":0.63666666,"width":0.1424878,"height":0.02}},{"char_start":159,"char_count":33,"bounds":{"left":0.50416666,"top":0.6566667,"width":0.142976,"height":0.02}},{"char_start":192,"char_count":32,"bounds":{"left":0.50416666,"top":0.6766667,"width":0.14331211,"height":0.02}},{"char_start":224,"char_count":30,"bounds":{"left":0.50416666,"top":0.69666666,"width":0.13948365,"height":0.02}},{"char_start":254,"char_count":31,"bounds":{"left":0.50416666,"top":0.71666664,"width":0.14405376,"height":0.02}},{"char_start":285,"char_count":14,"bounds":{"left":0.50416666,"top":0.7366667,"width":0.056813966,"height":0.02}}],"role_description":"text"},{"role":"AXStaticText","text":"gemini","depth":5,"bounds":{"left":0.50277776,"top":0.6011111,"width":0.031944446,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"warrning","depth":5,"bounds":{"left":0.50277776,"top":0.64555556,"width":0.041319445,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"claude","depth":5,"bounds":{"left":0.50277776,"top":0.69,"width":0.031944446,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"цлауде","depth":5,"bounds":{"left":0.50277776,"top":0.73444444,"width":0.034375,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lazyByIdDesc(250)","depth":5,"bounds":{"left":0.50277776,"top":0.7788889,"width":0.08541667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"chunkByIdDesc()","depth":5,"bounds":{"left":0.50277776,"top":0.8233333,"width":0.077430554,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"lazyById()","depth":5,"bounds":{"left":0.50277776,"top":0.86777776,"width":0.046527777,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…","depth":5,"bounds":{"left":0.50277776,"top":0.9122222,"width":0.15625,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"A. The \"Infinite Accumulation\" Memory Leak…","depth":5,"bounds":{"left":0.50277776,"top":0.95666665,"width":0.15625,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"shouldSkipActivity","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.08298611,"height":-0.0011111498},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Image (1316x1070)","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.083680555,"height":-0.04555559},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"DocumentLoad","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.06875,"height":-0.09000003},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"captureException","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…","depth":5,"on_screen":false,"role_description":"text"}]...
|
7752451544506059883
|
-3196324383810596017
|
visual_change
|
accessibility
|
NULL
|
Today
Complete Call List (All Files)…
doSearch()
d Today
Complete Call List (All Files)…
doSearch()
doSearch
Switch cursor() to lazyById(250). It preserves the single-loop, generator-style code in the new version while restoring proper batched eager loading (avoiding N+1 on getIndexableAttributes()) and releasing the DB connection between chunks (avoiding long-held PDO connections during ES/Sentry calls).
gemini
warrning
claude
цлауде
lazyByIdDesc(250)
chunkByIdDesc()
lazyById()
Use lazyById() instead of cursor(): * Laravel's lazyById(250) fetches records in chunks under the hood (allowing for eager loading of relations without N+1) but yields them as a flat generator to the foreach loop. This gives you the clean syntax of a generator with the safety of chunked eager loading.…
A. The "Infinite Accumulation" Memory Leak…
shouldSkipActivity
Image (1316x1070)
DocumentLoad
You are seasoned code reviewer and your task is to make detailed code review of summarized page. First understand the code changes, then evaluate it and try to find potential issues and bottlenecks. Ignore tests.
captureException
Role: You are a Technical Lead. Your task is to provide a clear, high-level summary of the provided code diff or PR selection.…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
24411
|
1018
|
20
|
2026-05-12T09:11:53.982695+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778577113982_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Today
flow
флов
planhat
podcast
pdf_url
sentry
сен Today
flow
флов
planhat
podcast
pdf_url
sentry
сентръ
cache
цацхе
±/
alarm
alarм
alaram
аларам
false
фалсе
UP
УП
reports...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Today","depth":5,"bounds":{"left":0.48055556,"top":0.3122222,"width":0.027777778,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"flow","depth":5,"bounds":{"left":0.50277776,"top":0.35,"width":0.021527778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"флов","depth":5,"bounds":{"left":0.50277776,"top":0.39444444,"width":0.025,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"planhat","depth":5,"bounds":{"left":0.50277776,"top":0.43888888,"width":0.035069443,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"podcast","depth":5,"bounds":{"left":0.50277776,"top":0.48333332,"width":0.03784722,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"pdf_url","depth":5,"bounds":{"left":0.50277776,"top":0.5277778,"width":0.032986112,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sentry","depth":5,"bounds":{"left":0.50277776,"top":0.57222223,"width":0.030208332,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"сентръ","depth":5,"bounds":{"left":0.50277776,"top":0.6166667,"width":0.034722224,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cache","depth":5,"bounds":{"left":0.50277776,"top":0.6611111,"width":0.029513888,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"цацхе","depth":5,"bounds":{"left":0.50277776,"top":0.70555556,"width":0.029166667,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"±/","depth":5,"bounds":{"left":0.50277776,"top":0.75,"width":0.012152778,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alarm","depth":5,"bounds":{"left":0.50277776,"top":0.79444444,"width":0.027083334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"alarм","depth":5,"bounds":{"left":0.50277776,"top":0.8388889,"width":0.026041666,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"alaram","depth":5,"bounds":{"left":0.50277776,"top":0.8833333,"width":0.031944446,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"аларам","depth":5,"bounds":{"left":0.50277776,"top":0.92777777,"width":0.036458332,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"false","depth":5,"bounds":{"left":0.50277776,"top":0.92777777,"width":0.023611112,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"фалсе","depth":5,"bounds":{"left":0.50277776,"top":0.9722222,"width":0.030208332,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"UP","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.015625,"height":-0.01666665},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"УП","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.015625,"height":-0.061111093},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"reports","depth":5,"on_screen":false,"role_description":"text"}]...
|
-7941498187434881244
|
806785073969255522
|
visual_change
|
accessibility
|
NULL
|
Today
flow
флов
planhat
podcast
pdf_url
sentry
сен Today
flow
флов
planhat
podcast
pdf_url
sentry
сентръ
cache
цацхе
±/
alarm
alarм
alaram
аларам
false
фалсе
UP
УП
reports...
|
24409
|
NULL
|
NULL
|
NULL
|
|
24647
|
1027
|
29
|
2026-05-12T09:31:24.007178+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778578284007_m2.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
This Year
get inside worker container
enter contai This Year
get inside worker container
enter container
$crmService
crmService
private key perm
planet
sync opp
release lock
ttl
cache
redis service
Older
Add feature flag to team
test_batch_1
test_batch_1
test_batch_2
test_batch_2
get worker
to JiminnyDebugCommand
registration link
JiminnyDebugCommand
get container id
install in traget...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"This Year","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"get inside worker container","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"enter container","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$crmService","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"crmService","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"private key perm","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"planet","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sync opp","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"release lock","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ttl","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cache","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"redis service","depth":5,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Older","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Add feature flag to team","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_1","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_1","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_2","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_2","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"get worker","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to JiminnyDebugCommand","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"registration link","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"JiminnyDebugCommand","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"get container id","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"install in traget","depth":5,"on_screen":false,"role_description":"text"}]...
|
3041531327857213536
|
9091686076672400115
|
idle
|
accessibility
|
NULL
|
This Year
get inside worker container
enter contai This Year
get inside worker container
enter container
$crmService
crmService
private key perm
planet
sync opp
release lock
ttl
cache
redis service
Older
Add feature flag to team
test_batch_1
test_batch_1
test_batch_2
test_batch_2
get worker
to JiminnyDebugCommand
registration link
JiminnyDebugCommand
get container id
install in traget...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
24646
|
1026
|
31
|
2026-05-12T09:31:20.923985+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778578280923_m1.jpg...
|
Raycast
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
This Year
get inside worker container
enter contai This Year
get inside worker container
enter container
$crmService
crmService
private key perm
planet
sync opp
release lock
ttl
cache
redis service
Older
Add feature flag to team
test_batch_1
test_batch_1
test_batch_2
test_batch_2
get worker
to JiminnyDebugCommand
registration link
JiminnyDebugCommand
get container id...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"This Year","depth":5,"bounds":{"left":0.48055556,"top":0.38555557,"width":0.04097222,"height":0.016666668},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"get inside worker container","depth":5,"bounds":{"left":0.50277776,"top":0.42333335,"width":0.12118056,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"enter container","depth":5,"bounds":{"left":0.50277776,"top":0.4677778,"width":0.06875,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"$crmService","depth":5,"bounds":{"left":0.50277776,"top":0.51222223,"width":0.058333334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"crmService","depth":5,"bounds":{"left":0.57222223,"top":0.5133333,"width":0.048611112,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"private key perm","depth":5,"bounds":{"left":0.50277776,"top":0.5566667,"width":0.07569444,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"planet","depth":5,"bounds":{"left":0.50277776,"top":0.6011111,"width":0.029861111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"sync opp","depth":5,"bounds":{"left":0.50277776,"top":0.64555556,"width":0.042708334,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"release lock","depth":5,"bounds":{"left":0.50277776,"top":0.69,"width":0.055208333,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"ttl","depth":5,"bounds":{"left":0.50277776,"top":0.73444444,"width":0.011111111,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"cache","depth":5,"bounds":{"left":0.50277776,"top":0.7788889,"width":0.029513888,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"redis service","depth":5,"bounds":{"left":0.50277776,"top":0.8233333,"width":0.058680557,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Older","depth":5,"bounds":{"left":0.48055556,"top":0.87,"width":0.025,"height":0.016666668},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"Add feature flag to team","depth":5,"bounds":{"left":0.50277776,"top":0.9077778,"width":0.10798611,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_1","depth":5,"bounds":{"left":0.50277776,"top":0.9522222,"width":0.05486111,"height":0.02},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_1","depth":5,"bounds":{"left":0.56875,"top":0.9533333,"width":0.058333334,"height":0.017777778},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_2","depth":5,"bounds":{"left":0.50277776,"top":0.99666667,"width":0.057638887,"height":0.0033333302},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"test_batch_2","depth":5,"bounds":{"left":0.5715278,"top":0.99777776,"width":0.058333334,"height":0.00222224},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"get worker","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.049652778,"height":-0.04111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"to JiminnyDebugCommand","depth":5,"bounds":{"left":0.50277776,"top":1.0,"width":0.12048611,"height":-0.08555555},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"registration link","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"JiminnyDebugCommand","depth":5,"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"get container id","depth":5,"on_screen":false,"role_description":"text"}]...
|
-2180653602819273320
|
4480000053950044625
|
visual_change
|
accessibility
|
NULL
|
This Year
get inside worker container
enter contai This Year
get inside worker container
enter container
$crmService
crmService
private key perm
planet
sync opp
release lock
ttl
cache
redis service
Older
Add feature flag to team
test_batch_1
test_batch_1
test_batch_2
test_batch_2
get worker
to JiminnyDebugCommand
registration link
JiminnyDebugCommand
get container id...
|
24645
|
NULL
|
NULL
|
NULL
|
|
8057
|
357
|
17
|
2026-05-08T09:57:56.661246+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778234276661_m1.jpg...
|
PhpStorm
|
Overwrite Existing Files
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
The following file should be created by patch, but The following file should be created by patch, but it already exists.
Do you want to overwrite it?
/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php
Cancel
Overwrite
Overwrite Existing Files...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"The following file should be created by patch, but it already exists.\nDo you want to overwrite it?\n/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php","depth":1,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":1,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Overwrite","depth":1,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Overwrite Existing Files","depth":1,"on_screen":true,"role_description":"text"}]...
|
-3824029675182529190
|
8720054964663339363
|
click
|
accessibility
|
NULL
|
The following file should be created by patch, but The following file should be created by patch, but it already exists.
Do you want to overwrite it?
/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php
Cancel
Overwrite
Overwrite Existing Files...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
8056
|
358
|
16
|
2026-05-08T09:57:56.462158+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778234276462_m2.jpg...
|
PhpStorm
|
Overwrite Existing Files
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
The following file should be created by patch, but The following file should be created by patch, but it already exists.
Do you want to overwrite it?
/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php
Cancel
Overwrite
Overwrite Existing Files...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"The following file should be created by patch, but it already exists.\nDo you want to overwrite it?\n/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php","depth":1,"bounds":{"left":0.42785904,"top":0.48443735,"width":0.15824468,"height":0.040702313},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":1,"bounds":{"left":0.5269282,"top":0.53152436,"width":0.025930852,"height":0.027134877},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Overwrite","depth":1,"bounds":{"left":0.55485374,"top":0.53152436,"width":0.03125,"height":0.027134877},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Overwrite Existing Files","depth":1,"bounds":{"left":0.4737367,"top":0.45889863,"width":0.05219415,"height":0.012769354},"on_screen":true,"role_description":"text"}]...
|
-3824029675182529190
|
8720054964663339363
|
visual_change
|
accessibility
|
NULL
|
The following file should be created by patch, but The following file should be created by patch, but it already exists.
Do you want to overwrite it?
/Users/lukas/jiminny/app/app/Jobs/Middleware/HandleHubspotRateLimit.php
Cancel
Overwrite
Overwrite Existing Files...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
13999
|
623
|
10
|
2026-05-09T16:48:49.336079+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778345329336_m1.jpg...
|
Firefox
|
Nginx Proxy Manager — Personal
|
True
|
http://192.168.0.242:81/nginx/proxy
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Stop Losing Notes: Pick A Cross-Device App That Sy Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
affine.pro
Pull requests · screenpipe/screenpipe · GitHub
Close tab
DNS / Nameservers | Hostinger
Close tab
Nginx Proxy Manager
Close tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
Close tab
SQLite Web: db.sqlite
Close tab
screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub
Close tab
DXP4800PLUS-B5F8
Close tab
AFFiNE - All In One KnowledgeOS
Close tab
All docs · AFFiNE
Close tab
Payments Logger
Close tab
Your old PC can run Windows 11 in a VM, but not on bare metal - [EMAIL] - Gmail
Close tab
Location Logger
Close tab
Finance Hub
Close tab
Finance Hub
Close tab
Select: transactions - db - Adminer
Close tab
Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
Close tab
VIVACOM
Close tab
Смартфони с Unlimited план до 120 € отстъпка | Vivacom
Close tab
VIVACOM
Close tab
Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom
Close tab
Claude Code | Claude Platform
Close tab
Claude
Close tab
lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea
Close tab
Outposts - Admin - authentik
Close tab
New Tab
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Nginx Proxy Manager
Nginx Proxy Manager
Admin Administrator
Admin
Administrator
Dashboard
Dashboard
Hosts
Hosts
Access Lists
Access Lists
SSL Certificates
SSL Certificates
Users
Users
Audit Log
Audit Log
Settings
Settings
Proxy Hosts
Proxy Hosts
Search Host…
Add Proxy Host
Add Proxy Host
SOURCE
DESTINATION
SSL
ACCESS
STATUS
ai.chat.lakylak.xyz
Created: 10th March 2026
http://[IP_ADDRESS]:11000
Let's Encrypt
Public
Online
app.lakylak.xyz
Created: 19th July 2025
http://[IP_ADDRESS]:18083
Let's Encrypt
Public
Online
app.payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:5174
Let's Encrypt
Public
Online
app.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8766
Let's Encrypt
Public
Online
audiobook.lakylak.xyz
Created: 15th June 2025
http://192.168..242:13378
Let's Encrypt
Public
Online
auth.lakylak.xyz
Created: 30th March 2026
http://[IP_ADDRESS]:9100
Let's Encrypt
Public
Online
backup.lakylak.xyz
Created: 10th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
beszel.lakylak.xyz
Created: 6th December 2025
http://[IP_ADDRESS]:8095
Let's Encrypt
Public
Online
bitwarden.lakylak.xyz
Created: 16th June 2025
http://[IP_ADDRESS]:9890
Let's Encrypt
Public
Online
book.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:6060
Let's Encrypt
Public
Online
crm.lakylak.xyz
Created: 25th July 2025
http://[IP_ADDRESS]:3353
Let's Encrypt
Public
Online
dawarich.lakylak.xyz
Created: 25th August 2025
http://[IP_ADDRESS]:3000
Let's Encrypt
Public
Online
db.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8767
Let's Encrypt
Public
Online
dsk-uploader.lakylak.xyz
Created: 15th August 2025
http://[IP_ADDRESS]:8502
Let's Encrypt
Public
Online
finance-hub.lakylak.xyz
Created: 8th May 2026
http://[IP_ADDRESS]:5175
Let's Encrypt
Public
Online
gitea.lakylak.xyz
Created: 18th July 2025
http://[IP_ADDRESS]:3052
Let's Encrypt
Public
Online
hydra.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4444
Let's Encrypt
Public
Online
images.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3474
Let's Encrypt
Public
Online
immich.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8212
Let's Encrypt
Public
Online
jellyfin.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8096
Let's Encrypt
Public
Online
lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
linkwarden.lakylak.xyz
Created: 13th December 2025
http://[IP_ADDRESS]:7461
Let's Encrypt
Public
Online
location-tracker.lakylak.xyz
Created: 30th August 2025
http://[IP_ADDRESS]:8050
Let's Encrypt
Public
Online
log.lakylak.xyz
Created: 23rd September 2025
http://[IP_ADDRESS]:18084
Let's Encrypt
Public
Online
login.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4446
Let's Encrypt
Public
Online
mcp.location.lakylak.xyz
Created: 15th March 2026
http://[IP_ADDRESS]:8052
Let's Encrypt
Public
Online
n8n.lakylak.xyz
Created: 17th July 2025
http://[IP_ADDRESS]:5678
Let's Encrypt
Public
Online
nas.lakylak.xyz
Created: 28th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
notes.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:8085
Let's Encrypt
Public
Online
obsidian.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3421
Let's Encrypt
Public
Online
outfit.lakylak.xyz
Created: 25th March 2026
http://[IP_ADDRESS]:8667
Let's Encrypt
Public
Online
owntracks.lakylak.xyz
Created: 12th August 2025
http://[IP_ADDRESS]:8083
Let's Encrypt
Public
Online
paperless.lakylak.xyz
Created: 25th October 2025
http://[IP_ADDRESS]:8777
Let's Encrypt
Public
Online
payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:3010
Let's Encrypt
Public
Online
pdf.lakylak.xyz
Created: 19th June 2025
http://[IP_ADDRESS]:7890
Let's Encrypt
Public
Online
portainer.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9000
Let's Encrypt
Public
Online
sqlite.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8768
Let's Encrypt
Public
Online
todo.lakylak.xyz
Created: 16th March 2026
http://reminder-app:8000
Let's Encrypt
Public
Online
tree.lakylak.xyz
Created: 19th December 2025
http://[IP_ADDRESS]:8200
Let's Encrypt
Public
Online
trilium.lakylak.xyz
Created: 24th December 2025
http://[IP_ADDRESS]:4292
Let's Encrypt
Public
Online
tube.lakylak.xyz
Created: 3rd December 2025
http://[IP_ADDRESS]:8770
Let's Encrypt
Public
Online
ytber.lakylak.xyz
Created: 11th March 2026
http://[IP_ADDRESS]:8100
Let's Encrypt
Public
Online
...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"affine.pro","depth":4,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · screenpipe/screenpipe · GitHub","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DNS / Nameservers | Hostinger","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Nginx Proxy Manager","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"AFFiNE - All In One KnowledgeOS","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Payments Logger","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Your old PC can run Windows 11 in a VM, but not on bare metal - kovaliklukas@gmail.com - Gmail","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Location Logger","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Finance Hub","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Finance Hub","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Select: transactions - db - Adminer","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"VIVACOM","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Смартфони с Unlimited план до 120 € отстъпка | Vivacom","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"VIVACOM","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Claude Code | Claude Platform","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Claude","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Outposts - Admin - authentik","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Nginx Proxy Manager","depth":8,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nginx Proxy Manager","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Admin Administrator","depth":8,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Admin","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Administrator","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Dashboard","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dashboard","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Hosts","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hosts","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Access Lists","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Access Lists","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" SSL Certificates","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SSL Certificates","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Users","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Users","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Audit Log","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audit Log","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Settings","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Settings","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Proxy Hosts","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Proxy Hosts","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search Host…","depth":10,"on_screen":false,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"","depth":9,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add Proxy Host","depth":9,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add Proxy Host","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SOURCE","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DESTINATION","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SSL","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACCESS","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"STATUS","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ai.chat.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 10th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:11000","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 19th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:18083","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.payments.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 14th February 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5174","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.screenpipe.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 27th April 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8766","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audiobook.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168..242:13378","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"auth.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 30th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9100","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"backup.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 10th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.243:9999","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"beszel.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 6th December 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8095","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bitwarden.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 16th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9890","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"book.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 31st October 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:6060","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"crm.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th July 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3353","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dawarich.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th August 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3000","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.screenpipe.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 27th April 2026","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8767","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dsk-uploader.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th August 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8502","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"finance-hub.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 8th May 2026","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5175","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"gitea.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 18th July 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3052","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hydra.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 29th March 2026","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:4444","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"images.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th June 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3474","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"immich.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8212","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"jellyfin.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8096","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9999","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"linkwarden.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 13th December 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:7461","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"location-tracker.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 30th August 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8050","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"log.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 23rd September 2025","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:18084","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"login.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 29th March 2026","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:4446","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"mcp.location.lakylak.xyz","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th March 2026","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8052","depth":13,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.0,"width":0.05625,"height":0.021666666},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.0,"width":0.027430555,"height":0.021666666},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.0,"width":0.030902777,"height":0.021666666},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.0,"width":0.010416667,"height":0.021666666},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.0,"width":0.010416667,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"n8n.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5678","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.045555554,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.045555554,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.045555554,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.045555554,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.047222223,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nas.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 28th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9999","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.12833333,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.12833333,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.12833333,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.12833333,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.13,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"notes.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 31st October 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8085","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.21111111,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.21111111,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.21111111,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.21111111,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.21277778,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"obsidian.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3421","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.29444444,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.29444444,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.29444444,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.29444444,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.2961111,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"outfit.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8667","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.3772222,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.3772222,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.3772222,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.3772222,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.37888888,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"owntracks.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 12th August 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8083","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.46055555,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.46055555,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.46055555,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.46055555,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.46222222,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"paperless.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th October 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8777","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.54333335,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.54333335,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.54333335,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.54333335,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.545,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"payments.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 14th February 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3010","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.6261111,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.6261111,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.6261111,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.6261111,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.62777776,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"pdf.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 19th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:7890","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.70944446,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.70944446,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.70944446,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.70944446,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.7111111,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"portainer.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9000","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.7922222,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.7922222,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.7922222,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.7922222,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.79388887,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"sqlite.screenpipe.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 27th April 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8768","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.875,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.875,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.875,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.875,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.87666667,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"todo.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 16th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://reminder-app:8000","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":0.9583333,"width":0.05625,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":0.9583333,"width":0.027430555,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":0.9583333,"width":0.030902777,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":0.9583333,"width":0.010416667,"height":0.021666666},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":0.96,"width":0.010416667,"height":0.017222222},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tree.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 19th December 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8200","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.1125,"top":1.0,"width":0.05625,"height":-0.04111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.22951388,"top":1.0,"width":0.027430555,"height":-0.04111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.31666666,"top":1.0,"width":0.030902777,"height":-0.04111111},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.42048612,"top":1.0,"width":0.010416667,"height":-0.04111111},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.42048612,"top":1.0,"width":0.010416667,"height":-0.042777777},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"trilium.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 24th December 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:4292","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tube.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 3rd December 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8770","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ytber.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 11th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8100","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8850594340789095982
|
-4933942932823166657
|
click
|
accessibility
|
NULL
|
Stop Losing Notes: Pick A Cross-Device App That Sy Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
affine.pro
Pull requests · screenpipe/screenpipe · GitHub
Close tab
DNS / Nameservers | Hostinger
Close tab
Nginx Proxy Manager
Close tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
Close tab
SQLite Web: db.sqlite
Close tab
screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub
Close tab
DXP4800PLUS-B5F8
Close tab
AFFiNE - All In One KnowledgeOS
Close tab
All docs · AFFiNE
Close tab
Payments Logger
Close tab
Your old PC can run Windows 11 in a VM, but not on bare metal - [EMAIL] - Gmail
Close tab
Location Logger
Close tab
Finance Hub
Close tab
Finance Hub
Close tab
Select: transactions - db - Adminer
Close tab
Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
Close tab
VIVACOM
Close tab
Смартфони с Unlimited план до 120 € отстъпка | Vivacom
Close tab
VIVACOM
Close tab
Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom
Close tab
Claude Code | Claude Platform
Close tab
Claude
Close tab
lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea
Close tab
Outposts - Admin - authentik
Close tab
New Tab
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Nginx Proxy Manager
Nginx Proxy Manager
Admin Administrator
Admin
Administrator
Dashboard
Dashboard
Hosts
Hosts
Access Lists
Access Lists
SSL Certificates
SSL Certificates
Users
Users
Audit Log
Audit Log
Settings
Settings
Proxy Hosts
Proxy Hosts
Search Host…
Add Proxy Host
Add Proxy Host
SOURCE
DESTINATION
SSL
ACCESS
STATUS
ai.chat.lakylak.xyz
Created: 10th March 2026
http://[IP_ADDRESS]:11000
Let's Encrypt
Public
Online
app.lakylak.xyz
Created: 19th July 2025
http://[IP_ADDRESS]:18083
Let's Encrypt
Public
Online
app.payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:5174
Let's Encrypt
Public
Online
app.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8766
Let's Encrypt
Public
Online
audiobook.lakylak.xyz
Created: 15th June 2025
http://192.168..242:13378
Let's Encrypt
Public
Online
auth.lakylak.xyz
Created: 30th March 2026
http://[IP_ADDRESS]:9100
Let's Encrypt
Public
Online
backup.lakylak.xyz
Created: 10th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
beszel.lakylak.xyz
Created: 6th December 2025
http://[IP_ADDRESS]:8095
Let's Encrypt
Public
Online
bitwarden.lakylak.xyz
Created: 16th June 2025
http://[IP_ADDRESS]:9890
Let's Encrypt
Public
Online
book.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:6060
Let's Encrypt
Public
Online
crm.lakylak.xyz
Created: 25th July 2025
http://[IP_ADDRESS]:3353
Let's Encrypt
Public
Online
dawarich.lakylak.xyz
Created: 25th August 2025
http://[IP_ADDRESS]:3000
Let's Encrypt
Public
Online
db.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8767
Let's Encrypt
Public
Online
dsk-uploader.lakylak.xyz
Created: 15th August 2025
http://[IP_ADDRESS]:8502
Let's Encrypt
Public
Online
finance-hub.lakylak.xyz
Created: 8th May 2026
http://[IP_ADDRESS]:5175
Let's Encrypt
Public
Online
gitea.lakylak.xyz
Created: 18th July 2025
http://[IP_ADDRESS]:3052
Let's Encrypt
Public
Online
hydra.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4444
Let's Encrypt
Public
Online
images.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3474
Let's Encrypt
Public
Online
immich.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8212
Let's Encrypt
Public
Online
jellyfin.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8096
Let's Encrypt
Public
Online
lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
linkwarden.lakylak.xyz
Created: 13th December 2025
http://[IP_ADDRESS]:7461
Let's Encrypt
Public
Online
location-tracker.lakylak.xyz
Created: 30th August 2025
http://[IP_ADDRESS]:8050
Let's Encrypt
Public
Online
log.lakylak.xyz
Created: 23rd September 2025
http://[IP_ADDRESS]:18084
Let's Encrypt
Public
Online
login.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4446
Let's Encrypt
Public
Online
mcp.location.lakylak.xyz
Created: 15th March 2026
http://[IP_ADDRESS]:8052
Let's Encrypt
Public
Online
n8n.lakylak.xyz
Created: 17th July 2025
http://[IP_ADDRESS]:5678
Let's Encrypt
Public
Online
nas.lakylak.xyz
Created: 28th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
notes.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:8085
Let's Encrypt
Public
Online
obsidian.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3421
Let's Encrypt
Public
Online
outfit.lakylak.xyz
Created: 25th March 2026
http://[IP_ADDRESS]:8667
Let's Encrypt
Public
Online
owntracks.lakylak.xyz
Created: 12th August 2025
http://[IP_ADDRESS]:8083
Let's Encrypt
Public
Online
paperless.lakylak.xyz
Created: 25th October 2025
http://[IP_ADDRESS]:8777
Let's Encrypt
Public
Online
payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:3010
Let's Encrypt
Public
Online
pdf.lakylak.xyz
Created: 19th June 2025
http://[IP_ADDRESS]:7890
Let's Encrypt
Public
Online
portainer.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9000
Let's Encrypt
Public
Online
sqlite.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8768
Let's Encrypt
Public
Online
todo.lakylak.xyz
Created: 16th March 2026
http://reminder-app:8000
Let's Encrypt
Public
Online
tree.lakylak.xyz
Created: 19th December 2025
http://[IP_ADDRESS]:8200
Let's Encrypt
Public
Online
trilium.lakylak.xyz
Created: 24th December 2025
http://[IP_ADDRESS]:4292
Let's Encrypt
Public
Online
tube.lakylak.xyz
Created: 3rd December 2025
http://[IP_ADDRESS]:8770
Let's Encrypt
Public
Online
ytber.lakylak.xyz
Created: 11th March 2026
http://[IP_ADDRESS]:8100
Let's Encrypt
Public
Online
...
|
13988
|
NULL
|
NULL
|
NULL
|
|
14000
|
624
|
10
|
2026-05-09T16:48:49.919517+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778345329919_m2.jpg...
|
Firefox
|
Nginx Proxy Manager — Personal
|
True
|
http://192.168.0.242:81/nginx/proxy
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Stop Losing Notes: Pick A Cross-Device App That Sy Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
affine.pro
Pull requests · screenpipe/screenpipe · GitHub
Close tab
DNS / Nameservers | Hostinger
Close tab
Nginx Proxy Manager
Close tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
Close tab
SQLite Web: db.sqlite
Close tab
screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub
Close tab
DXP4800PLUS-B5F8
Close tab
AFFiNE - All In One KnowledgeOS
Close tab
All docs · AFFiNE
Close tab
Payments Logger
Close tab
Your old PC can run Windows 11 in a VM, but not on bare metal - [EMAIL] - Gmail
Close tab
Location Logger
Close tab
Finance Hub
Close tab
Finance Hub
Close tab
Select: transactions - db - Adminer
Close tab
Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
Close tab
VIVACOM
Close tab
Смартфони с Unlimited план до 120 € отстъпка | Vivacom
Close tab
VIVACOM
Close tab
Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom
Close tab
Claude Code | Claude Platform
Close tab
Claude
Close tab
lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea
Close tab
Outposts - Admin - authentik
Close tab
New Tab
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Nginx Proxy Manager
Nginx Proxy Manager
Admin Administrator
Admin
Administrator
Dashboard
Dashboard
Hosts
Hosts
Access Lists
Access Lists
SSL Certificates
SSL Certificates
Users
Users
Audit Log
Audit Log
Settings
Settings
Proxy Hosts
Proxy Hosts
Search Host…
Add Proxy Host
Add Proxy Host
SOURCE
DESTINATION
SSL
ACCESS
STATUS
ai.chat.lakylak.xyz
Created: 10th March 2026
http://[IP_ADDRESS]:11000
Let's Encrypt
Public
Online
app.lakylak.xyz
Created: 19th July 2025
http://[IP_ADDRESS]:18083
Let's Encrypt
Public
Online
app.payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:5174
Let's Encrypt
Public
Online
app.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8766
Let's Encrypt
Public
Online
audiobook.lakylak.xyz
Created: 15th June 2025
http://192.168..242:13378
Let's Encrypt
Public
Online
auth.lakylak.xyz
Created: 30th March 2026
http://[IP_ADDRESS]:9100
Let's Encrypt
Public
Online
backup.lakylak.xyz
Created: 10th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
beszel.lakylak.xyz
Created: 6th December 2025
http://[IP_ADDRESS]:8095
Let's Encrypt
Public
Online
bitwarden.lakylak.xyz
Created: 16th June 2025
http://[IP_ADDRESS]:9890
Let's Encrypt
Public
Online
book.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:6060
Let's Encrypt
Public
Online
crm.lakylak.xyz
Created: 25th July 2025
http://[IP_ADDRESS]:3353
Let's Encrypt
Public
Online
dawarich.lakylak.xyz
Created: 25th August 2025
http://[IP_ADDRESS]:3000
Let's Encrypt
Public
Online
db.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8767
Let's Encrypt
Public
Online
dsk-uploader.lakylak.xyz
Created: 15th August 2025
http://[IP_ADDRESS]:8502
Let's Encrypt
Public
Online
finance-hub.lakylak.xyz
Created: 8th May 2026
http://[IP_ADDRESS]:5175
Let's Encrypt
Public
Online
gitea.lakylak.xyz
Created: 18th July 2025
http://[IP_ADDRESS]:3052
Let's Encrypt
Public
Online
hydra.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4444
Let's Encrypt
Public
Online
images.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3474
Let's Encrypt
Public
Online
immich.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8212
Let's Encrypt
Public
Online
jellyfin.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8096
Let's Encrypt
Public
Online
lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
linkwarden.lakylak.xyz
Created: 13th December 2025
http://[IP_ADDRESS]:7461
Let's Encrypt
Public
Online
location-tracker.lakylak.xyz
Created: 30th August 2025
http://[IP_ADDRESS]:8050
Let's Encrypt
Public
Online
log.lakylak.xyz
Created: 23rd September 2025
http://[IP_ADDRESS]:18084
Let's Encrypt
Public
Online
login.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4446
Let's Encrypt
Public
Online
mcp.location.lakylak.xyz
Created: 15th March 2026
http://[IP_ADDRESS]:8052
Let's Encrypt
Public
Online
n8n.lakylak.xyz
Created: 17th July 2025
http://[IP_ADDRESS]:5678
Let's Encrypt
Public
Online
nas.lakylak.xyz
Created: 28th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
notes.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:8085
Let's Encrypt
Public
Online
obsidian.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3421
Let's Encrypt
Public
Online
outfit.lakylak.xyz
Created: 25th March 2026
http://[IP_ADDRESS]:8667
Let's Encrypt
Public
Online
owntracks.lakylak.xyz
Created: 12th August 2025
http://[IP_ADDRESS]:8083
Let's Encrypt
Public
Online
paperless.lakylak.xyz
Created: 25th October 2025
http://[IP_ADDRESS]:8777
Let's Encrypt
Public
Online
payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:3010
Let's Encrypt
Public
Online
pdf.lakylak.xyz
Created: 19th June 2025
http://[IP_ADDRESS]:7890
Let's Encrypt
Public
Online
portainer.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9000
Let's Encrypt
Public
Online
...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE","depth":4,"bounds":{"left":0.020113032,"top":0.5826017,"width":0.08061835,"height":0.021548284},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"affine.pro","depth":4,"bounds":{"left":0.020113032,"top":0.60415006,"width":0.016788565,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pull requests · screenpipe/screenpipe · GitHub","depth":4,"bounds":{"left":0.0,"top":0.0518755,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.0518755,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DNS / Nameservers | Hostinger","depth":4,"bounds":{"left":0.0,"top":0.08459697,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.08459697,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Nginx Proxy Manager","depth":4,"bounds":{"left":0.0,"top":0.11731844,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.11731844,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.0,"top":0.15003991,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.15003991,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"top":0.18276137,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.18276137,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.0,"top":0.21548285,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.21548285,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub","depth":4,"bounds":{"left":0.0,"top":0.2482043,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.2482043,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0,"top":0.28092578,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.28092578,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"AFFiNE - All In One KnowledgeOS","depth":4,"bounds":{"left":0.0,"top":0.31364724,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.31364724,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"All docs · AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.3463687,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.3463687,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Payments Logger","depth":4,"bounds":{"left":0.0,"top":0.3790902,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.3790902,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Your old PC can run Windows 11 in a VM, but not on bare metal - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.0,"top":0.41181165,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.41181165,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Location Logger","depth":4,"bounds":{"left":0.0,"top":0.4445331,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.4445331,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Finance Hub","depth":4,"bounds":{"left":0.0,"top":0.4772546,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.4772546,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Finance Hub","depth":4,"bounds":{"left":0.0,"top":0.509976,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.509976,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Select: transactions - db - Adminer","depth":4,"bounds":{"left":0.0,"top":0.54269755,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.54269755,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE","depth":4,"bounds":{"left":0.0,"top":0.575419,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.575419,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"VIVACOM","depth":4,"bounds":{"left":0.0,"top":0.60814047,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.60814047,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Смартфони с Unlimited план до 120 € отстъпка | Vivacom","depth":4,"bounds":{"left":0.0,"top":0.6408619,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.6408619,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"VIVACOM","depth":4,"bounds":{"left":0.0,"top":0.6735834,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.6735834,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom","depth":4,"bounds":{"left":0.0,"top":0.70630485,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.70630485,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Claude Code | Claude Platform","depth":4,"bounds":{"left":0.0,"top":0.7390263,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.7390263,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Claude","depth":4,"bounds":{"left":0.0,"top":0.7717478,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.7717478,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea","depth":4,"bounds":{"left":0.0,"top":0.8044693,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.8044693,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Outposts - Admin - authentik","depth":4,"bounds":{"left":0.0,"top":0.83719075,"width":0.016123671,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0006648936,"top":0.83719075,"width":0.004986702,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.81803674,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.8547486,"width":0.016123671,"height":0.0311253},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8858739,"width":0.016123671,"height":0.027533919},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.9134078,"width":0.016123671,"height":0.02793296},"on_screen":true,"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.0,"top":0.9413408,"width":0.016123671,"height":0.027533919},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.9688747,"width":0.016123671,"height":0.0311253},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Nginx Proxy Manager","depth":8,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nginx Proxy Manager","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Admin Administrator","depth":8,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Admin","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Administrator","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Dashboard","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Dashboard","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Hosts","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hosts","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Access Lists","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Access Lists","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" SSL Certificates","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SSL Certificates","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Users","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Users","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Audit Log","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Audit Log","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":" Settings","depth":10,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Settings","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Proxy Hosts","depth":9,"on_screen":false,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Proxy Hosts","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search Host…","depth":10,"on_screen":false,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"","depth":9,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Add Proxy Host","depth":9,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add Proxy Host","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SOURCE","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DESTINATION","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SSL","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACCESS","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"STATUS","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ai.chat.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 10th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:11000","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 19th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:18083","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.payments.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 14th February 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5174","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.screenpipe.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 27th April 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8766","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"audiobook.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168..242:13378","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"auth.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 30th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9100","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"backup.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 10th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.243:9999","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"beszel.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 6th December 2025","depth":13,"bounds":{"left":0.12084442,"top":0.0,"width":0.05119681,"height":0.013567438},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8095","depth":13,"bounds":{"left":0.22207446,"top":0.0,"width":0.053025264,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.0,"width":0.026928192,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.0,"width":0.013131649,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.0,"width":0.014793883,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.0,"width":0.004986702,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.0,"width":0.004986702,"height":0.012370312},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"bitwarden.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.0,"width":0.036236703,"height":0.012370312},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 16th June 2025","depth":13,"bounds":{"left":0.12084442,"top":0.0,"width":0.043716755,"height":0.013567438},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9890","depth":13,"bounds":{"left":0.22207446,"top":0.0,"width":0.053025264,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.0,"width":0.026928192,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.0,"width":0.013131649,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.0,"width":0.014793883,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.0,"width":0.004986702,"height":0.01556265},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.0,"width":0.004986702,"height":0.012370312},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"book.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.010774142,"width":0.027593086,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 31st October 2025","depth":13,"bounds":{"left":0.12084442,"top":0.032322425,"width":0.04886968,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:6060","depth":13,"bounds":{"left":0.22207446,"top":0.01915403,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.01915403,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.01915403,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.01915403,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.01915403,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.020351157,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"crm.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.070231445,"width":0.025598405,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th July 2025","depth":13,"bounds":{"left":0.12084442,"top":0.09177973,"width":0.042386968,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3353","depth":13,"bounds":{"left":0.22207446,"top":0.079010375,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.079010375,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.079010375,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.079010375,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.079010375,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.080207504,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dawarich.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.1300878,"width":0.034408245,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th August 2025","depth":13,"bounds":{"left":0.12084442,"top":0.15163608,"width":0.04720745,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3000","depth":13,"bounds":{"left":0.22207446,"top":0.13846768,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.13846768,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.13846768,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.13846768,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.13846768,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.1396648,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"db.screenpipe.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.1895451,"width":0.04288564,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 27th April 2026","depth":13,"bounds":{"left":0.12084442,"top":0.21109338,"width":0.043218084,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8767","depth":13,"bounds":{"left":0.22207446,"top":0.19832402,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.19832402,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.19832402,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.19832402,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.19832402,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.19952115,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"dsk-uploader.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.2490024,"width":0.04089096,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th August 2025","depth":13,"bounds":{"left":0.12084442,"top":0.27055067,"width":0.04720745,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8502","depth":13,"bounds":{"left":0.22207446,"top":0.25778133,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.25778133,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.25778133,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.25778133,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.25778133,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.25897846,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"finance-hub.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.30885875,"width":0.0390625,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 8th May 2026","depth":13,"bounds":{"left":0.12084442,"top":0.33040702,"width":0.039893616,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5175","depth":13,"bounds":{"left":0.22207446,"top":0.31723863,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.31723863,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.31723863,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.31723863,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.31723863,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.31843576,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"gitea.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.36831605,"width":0.027260639,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 18th July 2025","depth":13,"bounds":{"left":0.12084442,"top":0.38986433,"width":0.042386968,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3052","depth":13,"bounds":{"left":0.22207446,"top":0.37709498,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.37709498,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.37709498,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.37709498,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.37709498,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.3782921,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"hydra.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.42777336,"width":0.028590426,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 29th March 2026","depth":13,"bounds":{"left":0.12084442,"top":0.44972068,"width":0.045877658,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:4444","depth":13,"bounds":{"left":0.22207446,"top":0.4365523,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.4365523,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.4365523,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.4365523,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.4365523,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.43774942,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"images.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.48762968,"width":0.030917553,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th June 2025","depth":13,"bounds":{"left":0.12084442,"top":0.509178,"width":0.043716755,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3474","depth":13,"bounds":{"left":0.22207446,"top":0.4960096,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.4960096,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.4960096,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.4960096,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.4960096,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.49720672,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"immich.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.547087,"width":0.03158245,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"bounds":{"left":0.12084442,"top":0.5686353,"width":0.043716755,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8212","depth":13,"bounds":{"left":0.22207446,"top":0.55586594,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.55586594,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.55586594,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.55586594,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.55586594,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.55706304,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"jellyfin.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.6065443,"width":0.03025266,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"bounds":{"left":0.12084442,"top":0.62849164,"width":0.043716755,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8096","depth":13,"bounds":{"left":0.22207446,"top":0.61532325,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.61532325,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.61532325,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.61532325,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.61532325,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.61652035,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.6664006,"width":0.018118352,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"bounds":{"left":0.12084442,"top":0.68794894,"width":0.043716755,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9999","depth":13,"bounds":{"left":0.22207446,"top":0.67517954,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.67517954,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.67517954,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.67517954,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.67517954,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.6763767,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"linkwarden.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.7258579,"width":0.037732713,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 13th December 2025","depth":13,"bounds":{"left":0.12084442,"top":0.74740624,"width":0.053357713,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:7461","depth":13,"bounds":{"left":0.22207446,"top":0.73463684,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.73463684,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.73463684,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.73463684,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.73463684,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.735834,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"location-tracker.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.78571427,"width":0.045212764,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 30th August 2025","depth":13,"bounds":{"left":0.12084442,"top":0.8072626,"width":0.04720745,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8050","depth":13,"bounds":{"left":0.22207446,"top":0.79409415,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.79409415,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.79409415,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.79409415,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.79409415,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.7952913,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"log.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.8451716,"width":0.024268618,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 23rd September 2025","depth":13,"bounds":{"left":0.12084442,"top":0.8667199,"width":0.054853722,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:18084","depth":13,"bounds":{"left":0.22207446,"top":0.8539505,"width":0.055518616,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.8539505,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.8539505,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.8539505,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.8539505,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.85514766,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"login.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.9046289,"width":0.027426861,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 29th March 2026","depth":13,"bounds":{"left":0.12084442,"top":0.9261772,"width":0.045877658,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:4446","depth":13,"bounds":{"left":0.22207446,"top":0.9134078,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.9134078,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.9134078,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.9134078,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.9134078,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.91460496,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"mcp.location.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":0.9644852,"width":0.04089096,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th March 2026","depth":13,"bounds":{"left":0.12084442,"top":0.9860335,"width":0.045877658,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8052","depth":13,"bounds":{"left":0.22207446,"top":0.9728651,"width":0.053025264,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":0.9728651,"width":0.026928192,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":0.9728651,"width":0.013131649,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":0.9728651,"width":0.014793883,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":0.9728651,"width":0.004986702,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":0.97406226,"width":0.004986702,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"n8n.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":1.0,"width":0.02543218,"height":-0.02394259},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th July 2025","depth":13,"bounds":{"left":0.12084442,"top":1.0,"width":0.042386968,"height":-0.04549086},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:5678","depth":13,"bounds":{"left":0.22207446,"top":1.0,"width":0.053025264,"height":-0.03272152},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":1.0,"width":0.026928192,"height":-0.03272152},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":1.0,"width":0.013131649,"height":-0.03272152},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":1.0,"width":0.014793883,"height":-0.03272152},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":1.0,"width":0.004986702,"height":-0.03272152},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":1.0,"width":0.004986702,"height":-0.03391862},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"nas.lakylak.xyz","depth":12,"bounds":{"left":0.12350399,"top":1.0,"width":0.024933511,"height":-0.08339989},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 28th July 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9999","depth":13,"bounds":{"left":0.22207446,"top":1.0,"width":0.053025264,"height":-0.09217882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"bounds":{"left":0.32413563,"top":1.0,"width":0.026928192,"height":-0.09217882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"bounds":{"left":0.3801529,"top":1.0,"width":0.013131649,"height":-0.09217882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"bounds":{"left":0.421875,"top":1.0,"width":0.014793883,"height":-0.09217882},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"bounds":{"left":0.4715758,"top":1.0,"width":0.004986702,"height":-0.09217882},"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"bounds":{"left":0.4715758,"top":1.0,"width":0.004986702,"height":-0.09337592},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"notes.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 31st October 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8085","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"obsidian.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 17th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3421","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"outfit.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th March 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8667","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"owntracks.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 12th August 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8083","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"paperless.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 25th October 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:8777","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"payments.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 14th February 2026","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:3010","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"pdf.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 19th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:7890","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"portainer.lakylak.xyz","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Created: 15th June 2025","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"http://192.168.0.242:9000","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Let's Encrypt","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Public","depth":13,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":13,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8224291201436086194
|
-4933944032334794433
|
click
|
accessibility
|
NULL
|
Stop Losing Notes: Pick A Cross-Device App That Sy Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
affine.pro
Pull requests · screenpipe/screenpipe · GitHub
Close tab
DNS / Nameservers | Hostinger
Close tab
Nginx Proxy Manager
Close tab
Screenpipe — Archive
Close tab
SQLite Web: archive.db
Close tab
SQLite Web: db.sqlite
Close tab
screenpipe/.claude/skills at main · screenpipe/screenpipe · GitHub
Close tab
DXP4800PLUS-B5F8
Close tab
AFFiNE - All In One KnowledgeOS
Close tab
All docs · AFFiNE
Close tab
Payments Logger
Close tab
Your old PC can run Windows 11 in a VM, but not on bare metal - [EMAIL] - Gmail
Close tab
Location Logger
Close tab
Finance Hub
Close tab
Finance Hub
Close tab
Select: transactions - db - Adminer
Close tab
Stop Losing Notes: Pick A Cross-Device App That Syncs | AFFiNE
Close tab
VIVACOM
Close tab
Смартфони с Unlimited план до 120 € отстъпка | Vivacom
Close tab
VIVACOM
Close tab
Смартфон SAMSUNG GALAXY A57 5G 256GB | Vivacom
Close tab
Claude Code | Claude Platform
Close tab
Claude
Close tab
lakylak/finance-hub - finance-hub - Gitea: Git with a cup of tea
Close tab
Outposts - Admin - authentik
Close tab
New Tab
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Customize sidebar
Nginx Proxy Manager
Nginx Proxy Manager
Admin Administrator
Admin
Administrator
Dashboard
Dashboard
Hosts
Hosts
Access Lists
Access Lists
SSL Certificates
SSL Certificates
Users
Users
Audit Log
Audit Log
Settings
Settings
Proxy Hosts
Proxy Hosts
Search Host…
Add Proxy Host
Add Proxy Host
SOURCE
DESTINATION
SSL
ACCESS
STATUS
ai.chat.lakylak.xyz
Created: 10th March 2026
http://[IP_ADDRESS]:11000
Let's Encrypt
Public
Online
app.lakylak.xyz
Created: 19th July 2025
http://[IP_ADDRESS]:18083
Let's Encrypt
Public
Online
app.payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:5174
Let's Encrypt
Public
Online
app.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8766
Let's Encrypt
Public
Online
audiobook.lakylak.xyz
Created: 15th June 2025
http://192.168..242:13378
Let's Encrypt
Public
Online
auth.lakylak.xyz
Created: 30th March 2026
http://[IP_ADDRESS]:9100
Let's Encrypt
Public
Online
backup.lakylak.xyz
Created: 10th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
beszel.lakylak.xyz
Created: 6th December 2025
http://[IP_ADDRESS]:8095
Let's Encrypt
Public
Online
bitwarden.lakylak.xyz
Created: 16th June 2025
http://[IP_ADDRESS]:9890
Let's Encrypt
Public
Online
book.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:6060
Let's Encrypt
Public
Online
crm.lakylak.xyz
Created: 25th July 2025
http://[IP_ADDRESS]:3353
Let's Encrypt
Public
Online
dawarich.lakylak.xyz
Created: 25th August 2025
http://[IP_ADDRESS]:3000
Let's Encrypt
Public
Online
db.screenpipe.lakylak.xyz
Created: 27th April 2026
http://[IP_ADDRESS]:8767
Let's Encrypt
Public
Online
dsk-uploader.lakylak.xyz
Created: 15th August 2025
http://[IP_ADDRESS]:8502
Let's Encrypt
Public
Online
finance-hub.lakylak.xyz
Created: 8th May 2026
http://[IP_ADDRESS]:5175
Let's Encrypt
Public
Online
gitea.lakylak.xyz
Created: 18th July 2025
http://[IP_ADDRESS]:3052
Let's Encrypt
Public
Online
hydra.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4444
Let's Encrypt
Public
Online
images.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3474
Let's Encrypt
Public
Online
immich.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8212
Let's Encrypt
Public
Online
jellyfin.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:8096
Let's Encrypt
Public
Online
lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
linkwarden.lakylak.xyz
Created: 13th December 2025
http://[IP_ADDRESS]:7461
Let's Encrypt
Public
Online
location-tracker.lakylak.xyz
Created: 30th August 2025
http://[IP_ADDRESS]:8050
Let's Encrypt
Public
Online
log.lakylak.xyz
Created: 23rd September 2025
http://[IP_ADDRESS]:18084
Let's Encrypt
Public
Online
login.lakylak.xyz
Created: 29th March 2026
http://[IP_ADDRESS]:4446
Let's Encrypt
Public
Online
mcp.location.lakylak.xyz
Created: 15th March 2026
http://[IP_ADDRESS]:8052
Let's Encrypt
Public
Online
n8n.lakylak.xyz
Created: 17th July 2025
http://[IP_ADDRESS]:5678
Let's Encrypt
Public
Online
nas.lakylak.xyz
Created: 28th July 2025
http://[IP_ADDRESS]:9999
Let's Encrypt
Public
Online
notes.lakylak.xyz
Created: 31st October 2025
http://[IP_ADDRESS]:8085
Let's Encrypt
Public
Online
obsidian.lakylak.xyz
Created: 17th June 2025
http://[IP_ADDRESS]:3421
Let's Encrypt
Public
Online
outfit.lakylak.xyz
Created: 25th March 2026
http://[IP_ADDRESS]:8667
Let's Encrypt
Public
Online
owntracks.lakylak.xyz
Created: 12th August 2025
http://[IP_ADDRESS]:8083
Let's Encrypt
Public
Online
paperless.lakylak.xyz
Created: 25th October 2025
http://[IP_ADDRESS]:8777
Let's Encrypt
Public
Online
payments.lakylak.xyz
Created: 14th February 2026
http://[IP_ADDRESS]:3010
Let's Encrypt
Public
Online
pdf.lakylak.xyz
Created: 19th June 2025
http://[IP_ADDRESS]:7890
Let's Encrypt
Public
Online
portainer.lakylak.xyz
Created: 15th June 2025
http://[IP_ADDRESS]:9000
Let's Encrypt
Public
Online
...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
23512
|
990
|
18
|
2026-05-12T07:56:20.414780+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778572580414_m1.jpg...
|
Slack
|
Huddle: @Petko Kashinski - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions
Screen 1
Screen 2
Screen 1
Screen 2
Cancel
Share
Close...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Steliyan Georgiev, Direct Message, 1 of 7 suggestions","depth":10,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Screen 1","depth":15,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Screen 2","depth":15,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Screen 1","depth":15,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Screen 2","depth":15,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":12,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share","depth":12,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8202355344751847048
|
-5416931381120701645
|
click
|
hybrid
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions
Screen 1
Screen 2
Screen 1
Screen 2
Cancel
Share
Close
=+SlackFileEdit→JiminnyContent ExplorerData ExplorerCalendar• Notifications**• MoreSections +CS Day-to-day2 Getting started GuideJust CS Data* Daily Operations• Weekly prep© Renewals and Upsell:5 € Risk and Churn An...ImplementationImpl ProjectsTrial Opps (Under Rev...Stoyan's clientsViewGoHistoryWindowHelp> 0al)Support Daily - in 4h 4 m100% C78• Tue 12 May 10:56:20ws.planhat.com/jiminny/home/data-explorer/usagemetricdef?preview=UsageMetricDef.69f2c6529c9f21b58804Search Jiminny7 Metric |Datasetautomated-reports-track-interestEnd UserQ autactivities.automated-reports-track-interestNameOverviewRaw DataTracev EndUser 1Metricsautomated-reports-track-306 May07 MayFilter by Company05 May08 May®+LukasMay 05, 2026 - May 11, 202609 MayDAYS V10 May11 Mayas aSUM Vacross companiesNo groups found+ Show full listCommentsAdd a comment...
|
23509
|
NULL
|
NULL
|
NULL
|
|
23492
|
990
|
7
|
2026-05-12T07:55:49.292012+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778572549292_m1.jpg...
|
Slack
|
Huddle: @Petko Kashinski - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Steliyan Georgiev, Direct Message, 1 of 7 suggestions","depth":10,"on_screen":false,"role_description":"text"}]...
|
4654126085471364576
|
-7757563332906292733
|
visual_change
|
hybrid
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions
SlackFile Edit ViewGoHistoryWindowHelp>0 lal§ Support Daily - in 4 h 5 m100% (4 8• Tue 12 May 10:55:486д Huddle with Petko KashinskiY= Al Notes: OffLeave...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
23511
|
991
|
13
|
2026-05-12T07:56:19.661046+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778572579661_m2.jpg...
|
Slack
|
Huddle: @Petko Kashinski - Jiminny Inc - Slack
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions
Screen 1
Screen 2
Screen 1
Screen 2
Cancel
Share
Close...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Steliyan Georgiev, Direct Message, 1 of 7 suggestions","depth":10,"bounds":{"left":0.12533244,"top":0.82122904,"width":0.024933511,"height":0.0007980846},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Screen 1","depth":15,"bounds":{"left":0.29321808,"top":0.54588985,"width":0.01662234,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.29321808,"top":0.54668796,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":7,"bounds":{"left":0.29554522,"top":0.54668796,"width":0.014295213,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Screen 2","depth":15,"bounds":{"left":0.4195479,"top":0.54588985,"width":0.01662234,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.4195479,"top":0.54668796,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":7,"bounds":{"left":0.421875,"top":0.54668796,"width":0.014295213,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Screen 1","depth":15,"bounds":{"left":0.29321808,"top":0.54588985,"width":0.01662234,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.29321808,"top":0.54668796,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":7,"bounds":{"left":0.29554522,"top":0.54668796,"width":0.014295213,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Screen 2","depth":15,"bounds":{"left":0.4195479,"top":0.54588985,"width":0.01662234,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.4195479,"top":0.54668796,"width":0.0026595744,"height":0.012769354}},{"char_start":1,"char_count":7,"bounds":{"left":0.421875,"top":0.54668796,"width":0.014295213,"height":0.012769354}}],"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":12,"bounds":{"left":0.43118352,"top":0.651237,"width":0.026595745,"height":0.028731046},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share","depth":12,"bounds":{"left":0.46176863,"top":0.651237,"width":0.026595745,"height":0.028731046},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":11,"bounds":{"left":0.47905585,"top":0.27294493,"width":0.011968086,"height":0.028731046},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
8202355344751847048
|
-5416931381120701645
|
visual_change
|
hybrid
|
NULL
|
Steliyan Georgiev, Direct Message, 1 of 7 suggesti Steliyan Georgiev, Direct Message, 1 of 7 suggestions
Screen 1
Screen 2
Screen 1
Screen 2
Cancel
Share
Close
SlackVIewMistonWindowHelprTavsco.s?9 JY-20725-handle-HS-search-rate-limitProiectC) AutomatedReportGenerated.onp© PlaybackController.php(c) UserAutomatedReportscontroller.pnpPlanhatService.php Xus vetur.conng.sM. WEBHOOK FILTERING IMPLEMreadonly class PlanhatServicepublic function track(User Suser, string Sevent, array $payload = (]): voidpudld -l412 V19 AV> fih Sxtemnal Librariesv E° Scratches and Consolesv M Database Consoles6 Huddle with Petko KashinskV AEUA console [EU)A DEAL RISKS (EU]A DI (EU]A EU (EU4= Al Notes: Off& liminny@localnost& console liminny @localno* Dl liminny@localhostA HS local [liminny@localhcA SF [iiminny@localhostlA zoho dev [iiminny@localh&PROD& console PRODII¿ console 1 [PROD1A DI PRODI> AOAServicesvM natahaceV AEU& consolev &iiminny@localhost4,HS_local 1 s 665 msA SFV APROD- console 3$V A STAGINGconsole"DockenShare entire screenWindowScreen 116 t 2025 - A1125 - ALU- Client Succecs13 Sep 2025 - Client Successlient Successen 2025 - Client Successpdfodfndfpodcastpdfpodcast• supoont Dally • In 4n 4m100% 5.• lue 1z May 10:00.19= custom.log=laravel.l0gA SF (jiminny@localhost]4 HS_local [jiminny@localhost]« console [PROD] X# console [eu)cascadeA console [STAGING]Planhat Event Playbac+0 ..Tx: AutovSo jiminnyfind planhat event playback visited338 41 835 X04uhreadn1d = 87714E) Every huddle has a threadSend messages. fles. and links to evervone in the4162-9004-75T+51856689' = UU1diUid:huddle. They're saved as a thread in this directsage with @Petko Kashinski, so you canS5 ll even after the huddle is doneScreen 2CancellShare<nULL›il':ecimal)1:datetime, expr2:datetime)e selected (or first) suacestion and insert a dot aiActivitygroup_ids":L9J, "report_type": "exec_sgroup_ids":[],"report_type":"producgroup_ids":(],"report_type":"produc), "group_ids": [1944), "report_type":"c, "group_ids": [1944],"report_type":"e, "group_ids": (1963],"report_type":"(, "groupids": (1963],"report_type":"e, "group_ids": [2309], "report_type":"o"group_ids": [2309], "report_type":"!, "group_ids": [2309],"report_type":"!Leavegroup_ids": [91,2368,2,457,8],"repori0 {"team_id":1,"group_ids":[]."report type"."exec siQ Describe what you are looking foJiminny ...3 Petko KashinskMessages12 Add canvasP FileslnExternall connechons* Starred IYesterdav vAnudd le nanbened 12.14 PM• jiminny-x-integrati..You and Petko Kashinski were in the huddle for.8 platform-inner-team# Channeld• Saved for later • Due 2 hours agoPetko Kachincki 12.21 PMl# ai-chaptennlavhackVisitedi# alerts# backendToday# bugs# confusion-clinicLukas Kovalik 10:36 AMдооро утро# curiosity labПетко имаш ли минутка да те питам за РН# engineering# generalPetko Kashinski 10-52 AMХeй Лvкаттl# jiminny-bg# platform-ticketsСлел минутка окей ли е ?# product launchesLukas Kovalik 10:52 AMnazonna cei randomPetko Kashinski 10:54 AM# releases"sona-oinceUnddle# support# thank-vousYou joined the huddleLIVE 10:55 AM# the people of jimi..Meccaae Petka KachinckilA Direct messagesPetko…03 02al Crotuen Coorcinresets Mav 12. 11:001-6580-4849-00f1-980c-baa3-4c46-bea1-b005-66ch-45he-hA84-8Ae16-2475-40f2-a2Fc-fac3-8aa6-445d-h009-d2e5-5d7c-47f3-a911-9d22-0544-41bd-81e9-3999-70ce-497e-9b64-7c98-6065-4562-0160-1c2S-0217-43f9-a590-2cdf-cd94-4697-ab00-c53A Huddle with Dotkn KochinckiAl Notec: Offeave0 {"team_id":1, "request_ id"."318d3ce6-c70a-416a-8b1-6-c70a-416a-8b1f-aeb<null>0 {"team_id":1,"request_id":"4c40a7d6-4697-4b80-83f0-27d7885e2d63", "report_type":"exec_summary", "media_types":["pdf"].{"request id"."4c40a7d6-4697-4b80-83f0-27d<nul]>0 {"team_id":1,"request_id":"11a01db1-7358-4f91-a75c-169ef39cf7d8", "report_type":"exec_summary" "media_types":["pdf"].sinpques+ id".111a01dh1-7358-4401-a75c-160<null>0 {"team_id":1,"request_id":"75fa7c3a-03ae-4836-b0bc-861bb42d2d25" , "report_type":"coaching_profiles" "media_types":["p{"request_id":"75fa7c3a-03ae-4836-b0bc-861<null>0 {"team id":1,"request id":"9a812aee-c2ee-4908-83c3-17478465f014" "report type":"exec summary" "media types":["pdf" "podc {"request id":"9a812aee-c2ee-4908-83c3-1740 {"team_id":1. "request id"."9a812aee-c2ee-4908-83c3-17478465f014" "report type"."exec summary" "media types".["odf"_"{"request_id". "9a812aee-c2ee-4908-83c3-174W Windsurf Teams...
|
23510
|
NULL
|
NULL
|
NULL
|
|
17849
|
780
|
3
|
2026-05-11T10:38:31.324489+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495911324_m1.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.05590278,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.078819446,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.10208333,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.12534723,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"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.14861111,"top":0.0,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5018552065293873834
|
2684353235286853529
|
idle
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow...
|
17847
|
NULL
|
NULL
|
NULL
|
|
17824
|
779
|
30
|
2026-05-11T10:35:48.002750+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495748002_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 16:00 · Claude / Claude
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
16:00
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"bounds":{"left":0.57579786,"top":0.7470072,"width":0.010804521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.2942154,"top":0.0518755,"width":0.113696806,"height":0.032721467},"on_screen":true,"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.3075133,"top":0.06304868,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.2942154,"top":0.08459697,"width":0.113696806,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.3075133,"top":0.09577015,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3956117,"top":0.09177973,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.29704124,"top":0.118914604,"width":0.108211435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.29704124,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.30801198,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.31914893,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3302859,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.3414229,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"bounds":{"left":0.41456118,"top":0.061452515,"width":0.06698803,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.41456118,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"bounds":{"left":0.44365028,"top":0.06703911,"width":0.037898935,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.48620346,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.51163566,"top":0.059856344,"width":0.023769947,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.53607047,"top":0.059856344,"width":0.020944148,"height":0.0207502},"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.55767953,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.5934175,"top":0.059856344,"width":0.029753989,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.62383646,"top":0.059856344,"width":0.034075797,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.4945146,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8530585,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.87317157,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.87898934,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.88231385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.90109706,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.49950132,"top":0.14964086,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.8558843,"top":0.1452514,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.86984706,"top":0.14924182,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.87832445,"top":0.1452514,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8912899,"top":0.14924182,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.89727396,"top":0.14924182,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.50482047,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.5219415,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.539395,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.55651593,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.5734708,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.5905917,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.607879,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.625,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.642121,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"bounds":{"left":0.65924203,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"bounds":{"left":0.6765292,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"bounds":{"left":0.69365025,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"bounds":{"left":0.71077126,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"bounds":{"left":0.7280585,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"bounds":{"left":0.7453458,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"bounds":{"left":0.7624667,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"bounds":{"left":0.77958775,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:30","depth":13,"bounds":{"left":0.79670876,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:00","depth":13,"bounds":{"left":0.8138298,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:30","depth":13,"bounds":{"left":0.83111703,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:00","depth":13,"bounds":{"left":0.8479056,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:30","depth":13,"bounds":{"left":0.86519283,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:00","depth":13,"bounds":{"left":0.88248,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:30","depth":13,"bounds":{"left":0.8997673,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 May 16:00 · Claude / Claude","depth":10,"bounds":{"left":0.49817154,"top":0.2661612,"width":0.056017287,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.49883643,"top":0.7186752,"width":0.023936171,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.52543217,"top":0.71907425,"width":0.02244016,"height":0.023942538},"on_screen":true,"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.5505319,"top":0.7186752,"width":0.027925532,"height":0.02434158},"on_screen":true,"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.58111703,"top":0.71907425,"width":0.022273935,"height":0.023942538},"on_screen":true,"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.60605055,"top":0.7186752,"width":0.024102394,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"16:00","depth":10,"bounds":{"left":0.8992686,"top":0.7254589,"width":0.009807181,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iTerm2","depth":9,"bounds":{"left":0.49950132,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox","depth":9,"bounds":{"left":0.51961434,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CleanShot X","depth":9,"bounds":{"left":0.5397274,"top":0.7609737,"width":0.021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":9,"bounds":{"left":0.5696476,"top":0.7609737,"width":0.010970744,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QuickTime Player","depth":9,"bounds":{"left":0.58892953,"top":0.7609737,"width":0.030086435,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PhpStorm","depth":9,"bounds":{"left":0.62732714,"top":0.7609737,"width":0.017287234,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":9,"bounds":{"left":0.65292555,"top":0.7609737,"width":0.010305851,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Centre","depth":9,"bounds":{"left":0.6715425,"top":0.7609737,"width":0.025598405,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude","depth":9,"bounds":{"left":0.70545214,"top":0.7609737,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Slack","depth":9,"bounds":{"left":0.7258976,"top":0.7609737,"width":0.009474734,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alfred","depth":9,"bounds":{"left":0.7436835,"top":0.7609737,"width":0.010472074,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Raycast","depth":9,"bounds":{"left":0.7624667,"top":0.7609737,"width":0.013630319,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Information","depth":9,"bounds":{"left":0.7844083,"top":0.7609737,"width":0.033909574,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3304047951599160487
|
-337290405329200231
|
visual_change
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 16:00 · Claude / Claude
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
16:00
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
17823
|
NULL
|
NULL
|
NULL
|
|
17670
|
777
|
19
|
2026-05-11T10:28:15.024362+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495295024_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"bounds":{"left":0.5671542,"top":0.7438148,"width":0.010804521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.2942154,"top":0.0518755,"width":0.113696806,"height":0.032721467},"on_screen":true,"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.3075133,"top":0.06304868,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.2942154,"top":0.08459697,"width":0.113696806,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.3075133,"top":0.09577015,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3956117,"top":0.09177973,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.29704124,"top":0.118914604,"width":0.108211435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.29704124,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.30801198,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.31914893,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3302859,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.3414229,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"bounds":{"left":0.41456118,"top":0.061452515,"width":0.06698803,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.41456118,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"bounds":{"left":0.44365028,"top":0.06703911,"width":0.037898935,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.48620346,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.51163566,"top":0.059856344,"width":0.023769947,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.53607047,"top":0.059856344,"width":0.020944148,"height":0.0207502},"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.55767953,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.5934175,"top":0.059856344,"width":0.029753989,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.62383646,"top":0.059856344,"width":0.034075797,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.4945146,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8530585,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.87317157,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.87898934,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.88231385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.90109706,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.49950132,"top":0.14964086,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.8558843,"top":0.1452514,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.86984706,"top":0.14924182,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.87832445,"top":0.1452514,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8912899,"top":0.14924182,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.89727396,"top":0.14924182,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.50482047,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.5219415,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.539395,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.55651593,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.5734708,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.5905917,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.607879,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.625,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.642121,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"bounds":{"left":0.65924203,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"bounds":{"left":0.6765292,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"bounds":{"left":0.69365025,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"bounds":{"left":0.71077126,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"bounds":{"left":0.7280585,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"bounds":{"left":0.7453458,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"bounds":{"left":0.7624667,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"bounds":{"left":0.77958775,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2273584098675390401
|
-1778872324039519335
|
visual_change
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00...
|
17669
|
NULL
|
NULL
|
NULL
|
|
17669
|
777
|
18
|
2026-05-11T10:28:12.011205+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495292011_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 15:06 · iTerm2
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
15:06
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"bounds":{"left":0.5671542,"top":0.7438148,"width":0.010804521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.2942154,"top":0.0518755,"width":0.113696806,"height":0.032721467},"on_screen":true,"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.3075133,"top":0.06304868,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.2942154,"top":0.08459697,"width":0.113696806,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.3075133,"top":0.09577015,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3956117,"top":0.09177973,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.29704124,"top":0.118914604,"width":0.108211435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.29704124,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.30801198,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.31914893,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3302859,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.3414229,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"bounds":{"left":0.41456118,"top":0.061452515,"width":0.06698803,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.41456118,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"bounds":{"left":0.44365028,"top":0.06703911,"width":0.037898935,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.48620346,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.51163566,"top":0.059856344,"width":0.023769947,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.53607047,"top":0.059856344,"width":0.020944148,"height":0.0207502},"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.55767953,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.5934175,"top":0.059856344,"width":0.029753989,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.62383646,"top":0.059856344,"width":0.034075797,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.4945146,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8530585,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.87317157,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.87898934,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.88231385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.90109706,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.49950132,"top":0.14964086,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.8558843,"top":0.1452514,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.86984706,"top":0.14924182,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.87832445,"top":0.1452514,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8912899,"top":0.14924182,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.89727396,"top":0.14924182,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.50482047,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.5219415,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.539395,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.55651593,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.5734708,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.5905917,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.607879,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.625,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.642121,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"bounds":{"left":0.65924203,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"bounds":{"left":0.6765292,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"bounds":{"left":0.69365025,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"bounds":{"left":0.71077126,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"bounds":{"left":0.7280585,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"bounds":{"left":0.7453458,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"bounds":{"left":0.7624667,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"bounds":{"left":0.77958775,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:30","depth":13,"bounds":{"left":0.79670876,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:00","depth":13,"bounds":{"left":0.8138298,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:30","depth":13,"bounds":{"left":0.83111703,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:00","depth":13,"bounds":{"left":0.8479056,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:30","depth":13,"bounds":{"left":0.86519283,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:00","depth":13,"bounds":{"left":0.88248,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:30","depth":13,"bounds":{"left":0.8997673,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 May 15:06 · iTerm2","depth":10,"bounds":{"left":0.49817154,"top":0.2661612,"width":0.0390625,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.49883643,"top":0.7186752,"width":0.023936171,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.52543217,"top":0.71907425,"width":0.02244016,"height":0.023942538},"on_screen":true,"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.5505319,"top":0.7186752,"width":0.027925532,"height":0.02434158},"on_screen":true,"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.58111703,"top":0.71907425,"width":0.022273935,"height":0.023942538},"on_screen":true,"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.60605055,"top":0.7186752,"width":0.024102394,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15:06","depth":10,"bounds":{"left":0.8992686,"top":0.7254589,"width":0.009807181,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iTerm2","depth":9,"bounds":{"left":0.49950132,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox","depth":9,"bounds":{"left":0.51961434,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CleanShot X","depth":9,"bounds":{"left":0.5397274,"top":0.7609737,"width":0.021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":9,"bounds":{"left":0.5696476,"top":0.7609737,"width":0.010970744,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QuickTime Player","depth":9,"bounds":{"left":0.58892953,"top":0.7609737,"width":0.030086435,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PhpStorm","depth":9,"bounds":{"left":0.62732714,"top":0.7609737,"width":0.017287234,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":9,"bounds":{"left":0.65292555,"top":0.7609737,"width":0.010305851,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Centre","depth":9,"bounds":{"left":0.6715425,"top":0.7609737,"width":0.025598405,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude","depth":9,"bounds":{"left":0.70545214,"top":0.7609737,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Slack","depth":9,"bounds":{"left":0.7258976,"top":0.7609737,"width":0.009474734,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alfred","depth":9,"bounds":{"left":0.7436835,"top":0.7609737,"width":0.010472074,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Raycast","depth":9,"bounds":{"left":0.7624667,"top":0.7609737,"width":0.013630319,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Information","depth":9,"bounds":{"left":0.7844083,"top":0.7609737,"width":0.033909574,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8741636096909409974
|
-6678349884571221607
|
visual_change
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 15:06 · iTerm2
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
15:06
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
17850
|
781
|
2
|
2026-05-11T10:38:31.427345+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495911427_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"bounds":{"left":0.56648934,"top":0.7517957,"width":0.010804521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.2942154,"top":0.0518755,"width":0.113696806,"height":0.032721467},"on_screen":true,"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.3075133,"top":0.06304868,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.2942154,"top":0.08459697,"width":0.113696806,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.3075133,"top":0.09577015,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3956117,"top":0.09177973,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.29704124,"top":0.118914604,"width":0.108211435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.29704124,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.30801198,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.31914893,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3302859,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.3414229,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"bounds":{"left":0.41456118,"top":0.061452515,"width":0.06698803,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.41456118,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"bounds":{"left":0.44365028,"top":0.06703911,"width":0.037898935,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.48620346,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.51163566,"top":0.059856344,"width":0.023769947,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.53607047,"top":0.059856344,"width":0.020944148,"height":0.0207502},"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.55767953,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.5934175,"top":0.059856344,"width":0.029753989,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.62383646,"top":0.059856344,"width":0.034075797,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.4945146,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8530585,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.87317157,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.87898934,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.88231385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.90109706,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.49950132,"top":0.14964086,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.8558843,"top":0.1452514,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.86984706,"top":0.14924182,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.87832445,"top":0.1452514,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8912899,"top":0.14924182,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.89727396,"top":0.14924182,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-5018552065293873834
|
2684353235286853529
|
idle
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
17811
|
779
|
21
|
2026-05-11T10:34:38.406277+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778495678406_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
True
|
app.screenpipe.lakylak.xyz
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 15:48 · iTerm2
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
15:48
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Space","depth":2,"bounds":{"left":0.56648934,"top":0.7509976,"width":0.010804521,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.2942154,"top":0.0518755,"width":0.113696806,"height":0.032721467},"on_screen":true,"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.3075133,"top":0.06304868,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.2942154,"top":0.08459697,"width":0.113696806,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.3075133,"top":0.09577015,"width":0.037898935,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.3956117,"top":0.09177973,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.29704124,"top":0.118914604,"width":0.108211435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.29704124,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.30801198,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.31914893,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.3302859,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.3414229,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 12323.6MB]","depth":7,"bounds":{"left":0.41456118,"top":0.061452515,"width":0.06698803,"height":0.017956903},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.41456118,"top":0.06304868,"width":0.027759308,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 12323.6MB]","depth":9,"bounds":{"left":0.44365028,"top":0.06703911,"width":0.037898935,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.48620346,"top":0.059856344,"width":0.024767287,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.51163566,"top":0.059856344,"width":0.023769947,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.53607047,"top":0.059856344,"width":0.020944148,"height":0.0207502},"on_screen":true,"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.55767953,"top":0.059856344,"width":0.03507314,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.5934175,"top":0.059856344,"width":0.029753989,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.62383646,"top":0.059856344,"width":0.034075797,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"07","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"05","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.4945146,"top":0.10853951,"width":0.013464096,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.8530585,"top":0.10853951,"width":0.01412899,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.87317157,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.87898934,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.88231385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.90109706,"top":0.10454908,"width":0.012300532,"height":0.018754989},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.49950132,"top":0.14964086,"width":0.10571808,"height":0.009976057},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.8558843,"top":0.1452514,"width":0.009807181,"height":0.018754989},"on_screen":true,"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.86984706,"top":0.14924182,"width":0.004155585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.87832445,"top":0.1452514,"width":0.009640957,"height":0.018754989},"on_screen":true,"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.8912899,"top":0.14924182,"width":0.004654255,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.89727396,"top":0.14924182,"width":0.011136968,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.50482047,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.5219415,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.539395,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.55651593,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.5734708,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.5905917,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.607879,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.625,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.642121,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:30","depth":13,"bounds":{"left":0.65924203,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:00","depth":13,"bounds":{"left":0.6765292,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15:30","depth":13,"bounds":{"left":0.69365025,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:00","depth":13,"bounds":{"left":0.71077126,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16:30","depth":13,"bounds":{"left":0.7280585,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:00","depth":13,"bounds":{"left":0.7453458,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17:30","depth":13,"bounds":{"left":0.7624667,"top":0.21947326,"width":0.007978723,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:00","depth":13,"bounds":{"left":0.77958775,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18:30","depth":13,"bounds":{"left":0.79670876,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:00","depth":13,"bounds":{"left":0.8138298,"top":0.21947326,"width":0.00831117,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19:30","depth":13,"bounds":{"left":0.83111703,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:00","depth":13,"bounds":{"left":0.8479056,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20:30","depth":13,"bounds":{"left":0.86519283,"top":0.21947326,"width":0.008643617,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:00","depth":13,"bounds":{"left":0.88248,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21:30","depth":13,"bounds":{"left":0.8997673,"top":0.21947326,"width":0.008144947,"height":0.008778931},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 May 15:48 · iTerm2","depth":10,"bounds":{"left":0.49817154,"top":0.2661612,"width":0.039228722,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.49883643,"top":0.7186752,"width":0.023936171,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.52543217,"top":0.71907425,"width":0.02244016,"height":0.023942538},"on_screen":true,"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.5505319,"top":0.7186752,"width":0.027925532,"height":0.02434158},"on_screen":true,"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.58111703,"top":0.71907425,"width":0.022273935,"height":0.023942538},"on_screen":true,"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.60605055,"top":0.7186752,"width":0.024102394,"height":0.02434158},"on_screen":true,"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"15:48","depth":10,"bounds":{"left":0.8992686,"top":0.7254589,"width":0.009807181,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"iTerm2","depth":9,"bounds":{"left":0.49950132,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Firefox","depth":9,"bounds":{"left":0.51961434,"top":0.7609737,"width":0.011801862,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CleanShot X","depth":9,"bounds":{"left":0.5397274,"top":0.7609737,"width":0.021609042,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Finder","depth":9,"bounds":{"left":0.5696476,"top":0.7609737,"width":0.010970744,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QuickTime Player","depth":9,"bounds":{"left":0.58892953,"top":0.7609737,"width":0.030086435,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PhpStorm","depth":9,"bounds":{"left":0.62732714,"top":0.7609737,"width":0.017287234,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":9,"bounds":{"left":0.65292555,"top":0.7609737,"width":0.010305851,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Centre","depth":9,"bounds":{"left":0.6715425,"top":0.7609737,"width":0.025598405,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Claude","depth":9,"bounds":{"left":0.70545214,"top":0.7609737,"width":0.012134309,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Slack","depth":9,"bounds":{"left":0.7258976,"top":0.7609737,"width":0.009474734,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alfred","depth":9,"bounds":{"left":0.7436835,"top":0.7609737,"width":0.010472074,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Raycast","depth":9,"bounds":{"left":0.7624667,"top":0.7609737,"width":0.013630319,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"System Information","depth":9,"bounds":{"left":0.7844083,"top":0.7609737,"width":0.033909574,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1894942105618850653
|
-624949034887641447
|
visual_change
|
accessibility
|
NULL
|
Space
New Tab
New Tab
Screenpipe — Archive
Screenp Space
New Tab
New Tab
Screenpipe — Archive
Screenpipe — Archive
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 12323.6MB]
Screenpipe
[archive.db · 12323.6MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
07
/
05
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
14:30
15:00
15:30
16:00
16:30
17:00
17:30
18:00
18:30
19:00
19:30
20:00
20:30
21:00
21:30
7 May 15:48 · iTerm2
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭
15:48
iTerm2
Firefox
CleanShot X
Finder
QuickTime Player
PhpStorm
Music
Control Centre
Claude
Slack
Alfred
Raycast
System Information...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
733
|
26
|
48
|
2026-05-07T07:25:40.534273+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778138740534_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SonarQube for IDE suggestions
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"SonarQube for IDE suggestions","depth":2,"role_description":"text"}]...
|
6090214665409717558
|
117315771671184384
|
visual_change
|
hybrid
|
NULL
|
SonarQube for IDE suggestions
PhpStormFV faVsco.js SonarQube for IDE suggestions
PhpStormFV faVsco.jsProiect• →app ~ fiminnvlapo|>1h External Libraries)•= Scratches and ConsolesVIeWINavigarecodeLaravelKeractorJOOISWindowhel( #12024 on master k v• ActivityController.onp• SyncObjects.php • EventServiceProvider.php • ConvertLeadActivities.php• SaveActivity.php • LeadRepository.phpPurgeLookupCache.phpsyncriannat.gnp• CreateNudaeCreatedevent.ong• CreateActivityAddedToPlaylistEvent.phpcreatePlaybookcreatedevent.phg• UserAutomatedReportsController.php • PlaybackController.php • api.php• custom.log • laravel.log • SF [jiminny@localhost] • HS_local [jiminny@localhost] • console [PROD] • console [EU] • console [STAGING]IntegrationApp/service.phpLeadConverted.php CreateselrCoachedevent.pnpcreatecommentedevent.onp createsmssentevent.php•api vz.oho• RequestGenerateReportJob.php • AutomatedReportResult.pho AutomatedReport.php" suppont Dally • In 4h 3omAutomatedReportsServiceActivitie...ountTest v100% L2Thu 7 May 10:25:40CascadeNew Cascade+0 •WCascade Codex.Kick off a new project. Make changesacross your entire codebase.Fixina Favicon InconsistencylFix Flaky Automated Reports TesteUserPilot Event TriggeringAsk anvthina (*4L)÷ es Coda§ AdaptiveW Windsurf Teams 187:1 UTF-8Aensod...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
734
|
25
|
40
|
2026-05-07T07:25:43.315677+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778138743315_m1.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"SonarQube for IDE suggestions","depth":2,"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Detect more security issues in your PHP files","depth":3,"on_screen":true,"value":"Detect more security issues in your PHP files","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Try SonarQube Cloud for free","depth":2,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download SonarQube Server","depth":2,"bounds":{"left":0.0,"top":0.0,"width":0.12361111,"height":0.018888889},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Learn more","depth":2,"bounds":{"left":0.0,"top":0.0,"width":0.048611112,"height":0.018888889},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Don't ask again","depth":2,"bounds":{"left":0.0,"top":0.0,"width":0.06527778,"height":0.018888889},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"More","depth":2,"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Workspace associated with branch 'master' has been restored","depth":3,"on_screen":true,"value":"Workspace associated with branch 'master' has been restored","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-3504580739293001257
|
8397916836502602966
|
click
|
accessibility
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored...
|
732
|
NULL
|
NULL
|
NULL
|
|
738
|
26
|
51
|
2026-05-07T07:25:47.908016+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778138747908_m2.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"SonarQube for IDE suggestions","depth":2,"bounds":{"left":0.8753325,"top":0.839585,"width":0.100398935,"height":0.013567438},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Detect more security issues in your PHP files","depth":3,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.11037234,"height":0.013567438},"on_screen":true,"value":"Detect more security issues in your PHP files","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.09142287,"height":0.013567438},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Try SonarQube Cloud for free","depth":2,"bounds":{"left":0.8753325,"top":0.8747007,"width":0.06050532,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2706557748072129454
|
3498705744205907350
|
click
|
accessibility
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free...
|
737
|
NULL
|
NULL
|
NULL
|
|
735
|
26
|
49
|
2026-05-07T07:25:43.225955+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778138743225_m2.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored
text/html
text/html
text/html
Rollback
Configure…
More
Checked out master
text/html
text/html
text/html
text/html...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"SonarQube for IDE suggestions","depth":2,"bounds":{"left":0.8753325,"top":0.839585,"width":0.100398935,"height":0.013567438},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Detect more security issues in your PHP files","depth":3,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.11037234,"height":0.013567438},"on_screen":true,"value":"Detect more security issues in your PHP files","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.09142287,"height":0.013567438},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Try SonarQube Cloud for free","depth":2,"bounds":{"left":0.8753325,"top":0.8747007,"width":0.06050532,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download SonarQube Server","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.059175532,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Learn more","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.023271276,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Don't ask again","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.03125,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"More","depth":2,"bounds":{"left":0.9411569,"top":0.8747007,"width":0.016289894,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Workspace associated with branch 'master' has been restored","depth":3,"bounds":{"left":0.8753325,"top":0.9162011,"width":0.11037234,"height":0.027134877},"on_screen":true,"value":"Workspace associated with branch 'master' has been restored","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.9162011,"width":0.0987367,"height":0.027134877},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Rollback","depth":2,"bounds":{"left":0.8753325,"top":0.9489226,"width":0.017287234,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Configure…","depth":2,"bounds":{"left":0.89793885,"top":0.9489226,"width":0.023603724,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"More","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.016289894,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Checked out master","depth":3,"bounds":{"left":0.016954787,"top":0.8595371,"width":0.04488032,"height":0.016759777},"on_screen":true,"value":"Checked out master","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.016954787,"top":0.8611333,"width":0.027260639,"height":0.013567438},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.045877658,"top":0.8611333,"width":0.01761968,"height":0.013567438},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3098008617427818552
|
-828272447374343138
|
click
|
accessibility
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored
text/html
text/html
text/html
Rollback
Configure…
More
Checked out master
text/html
text/html
text/html
text/html...
|
733
|
NULL
|
NULL
|
NULL
|
|
740
|
26
|
52
|
2026-05-07T07:25:48.940823+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-07/1778 /Users/lukas/.screenpipe/data/data/2026-05-07/1778138748940_m2.jpg...
|
PhpStorm
|
faVsco.js – ActivityController.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored
text/html
text/html
text/html
Rollback
Configure…
More
Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorites playlist
*
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function unfavorite(Activity $activity)
{
$user = $th...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"SonarQube for IDE suggestions","depth":2,"bounds":{"left":0.8753325,"top":0.839585,"width":0.100398935,"height":0.013567438},"on_screen":true,"role_description":"text"},{"role":"AXTextField","text":"Detect more security issues in your PHP files","depth":3,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.11037234,"height":0.013567438},"on_screen":true,"value":"Detect more security issues in your PHP files","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.8555467,"width":0.09142287,"height":0.013567438},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Try SonarQube Cloud for free","depth":2,"bounds":{"left":0.8753325,"top":0.8747007,"width":0.06050532,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Download SonarQube Server","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.059175532,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Learn more","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.023271276,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Don't ask again","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.03125,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"More","depth":2,"bounds":{"left":0.9411569,"top":0.8747007,"width":0.016289894,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Workspace associated with branch 'master' has been restored","depth":3,"bounds":{"left":0.8753325,"top":0.9162011,"width":0.11037234,"height":0.027134877},"on_screen":true,"value":"Workspace associated with branch 'master' has been restored","help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"bounds":{"left":0.8753325,"top":0.9162011,"width":0.0987367,"height":0.027134877},"on_screen":true,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"text/html","depth":4,"on_screen":false,"help_text":"text/html","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Rollback","depth":2,"bounds":{"left":0.8753325,"top":0.9489226,"width":0.017287234,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Configure…","depth":2,"bounds":{"left":0.89793885,"top":0.9489226,"width":0.023603724,"height":0.013567438},"on_screen":true,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"More","depth":2,"bounds":{"left":0.27027926,"top":1.0,"width":0.016289894,"height":0.0},"on_screen":false,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"top":0.019952115,"width":0.03856383,"height":0.025538707},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>Some incoming commits are not fetched<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.4089096,"top":0.07581804,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.41788563,"top":0.074221864,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.42519948,"top":0.074221864,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","depth":4,"on_screen":true,"value":"<?php\n\nnamespace Jiminny\\Http\\Controllers\\API;\n\nuse Carbon\\Carbon;\nuse ChaseConey\\LaravelDatadogHelper\\Datadog;\nuse Exception;\nuse Illuminate\\Auth\\Access\\AuthorizationException;\nuse Illuminate\\Database\\Eloquent\\Builder;\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\Log;\nuse Illuminate\\Validation\\Rule;\nuse Illuminate\\Validation\\Rules\\In;\nuse Illuminate\\Validation\\ValidationException;\nuse InvalidArgumentException;\nuse Jiminny\\Component\\ActivityAnalytics;\nuse Jiminny\\Component\\ActivitySearch;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\PlaybackPage\\Comments\\Services\\ActivityCommentService;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Contracts\\Nudge\\NudgeFactoryInterface;\nuse Jiminny\\Contracts\\Playlist\\PlaylistTrackFactoryInterface;\nuse Jiminny\\Contracts\\Repositories\\PlaylistActivityRepository;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Enums\\TeamSetting;\nuse Jiminny\\Events\\Activities\\AiAutomation\\ActivityProspectAdded;\nuse Jiminny\\Events\\Activities\\Coaching\\Coached;\nuse Jiminny\\Contracts\\Services\\Crm\\SupportsObjectTypeParseInterface;\nuse Jiminny\\Exceptions\\LogicException;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Http\\Controllers\\API\\BaseController as Controller;\nuse Jiminny\\Http\\Controllers\\CommentContextInterface;\nuse Jiminny\\Http\\Responses\\Api\\AbstractResponse;\nuse Jiminny\\Http\\Responses\\Api\\Response;\nuse Jiminny\\Http\\Serializers\\JsonSerializer;\nuse Jiminny\\Http\\Transformers\\ActivityCommentTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTopicTriggerTransformer;\nuse Jiminny\\Http\\Transformers\\ActivityTransformer;\nuse Jiminny\\Http\\Transformers\\AvailabilityNotificationTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingFeedbackTransformer;\nuse Jiminny\\Http\\Transformers\\CoachingSectionsTransformer;\nuse Jiminny\\Http\\Transformers\\SearchTransformer;\nuse Jiminny\\Http\\Transformers\\StatsTransformer;\nuse Jiminny\\Jobs\\Crm\\SaveActivity;\nuse Jiminny\\Jobs\\Crm\\UpdateStage;\nuse Jiminny\\Jobs\\Telephony\\StartRecording;\nuse Jiminny\\Jobs\\Telephony\\StopRecording;\nuse Jiminny\\Jobs\\Telephony\\ToggleRecording;\nuse Jiminny\\Models\\Account;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Activity\\CoachRequest;\nuse Jiminny\\Models\\Activity\\Comment;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\Activity\\Share;\nuse Jiminny\\Models\\CoachingFeedback;\nuse Jiminny\\Models\\CoachingSection;\nuse Jiminny\\Models\\CoachingSectionCriterion;\nuse Jiminny\\Models\\CoachingSectionFeedback;\nuse Jiminny\\Models\\Contact;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Crm\\FieldData;\nuse Jiminny\\Models\\Crm\\Layout;\nuse Jiminny\\Models\\Crm\\LayoutEntity;\nuse Jiminny\\Models\\Feature\\FeatureEnum;\nuse Jiminny\\Models\\LanguageDialect;\nuse Jiminny\\Models\\Lead;\nuse Jiminny\\Models\\Nudge;\nuse Jiminny\\Models\\PlaybookCategory;\nuse Jiminny\\Models\\Playlist;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\Track;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\CoachingFeedbackRepository;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Repositories\\TeamRepository;\nuse Jiminny\\Rules\\CrmReference;\nuse Jiminny\\Rules\\MultidimensionalArrayMaxCharRule;\nuse Jiminny\\Services\\ActivityService;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Services\\PlaybackService;\nuse Jiminny\\Services\\UserService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse Psr\\Log\\LoggerInterface;\nuse Ramsey\\Uuid\\Uuid;\nuse Sentry;\nuse Symfony\\Component\\HttpFoundation;\n\nfinal class ActivityController extends Controller implements CommentContextInterface\n{\n // Number of minutes to look back on activities. i.e. a timeout on activity duration.\n private const LOOK_BACK = 180;\n\n public function __construct(\n private ProviderRegistry $providerRegistry,\n private ActivityService $activityService,\n Response $response,\n private UserService $userService,\n private ActivitySearch\\Service\\ActivitySearch $activitySearch,\n private NudgeFactoryInterface $nudgeFactory,\n private ActivityCommentService $activityCommentService,\n private LoggerInterface $logger,\n private readonly CoachingFeedbackRepository $coachingFeedbackRepository,\n private readonly TeamRepository $teamRepository,\n ) {\n parent::__construct($response);\n }\n\n public static function getCommentImplementation(): string\n {\n return Comment::class;\n }\n\n public function delete()\n {\n $this->request->validate([\n '*' => 'uuid:activities',\n ]);\n\n $deletedIds = [];\n foreach ($this->request->all() as $activityId) {\n $activity = Activity::idOrUuId($activityId);\n\n try {\n if ($this->authorize('delete', $activity)) {\n $activity->delete();\n $deletedIds[] = $activityId;\n\n \\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n }\n } catch (AuthorizationException $authorizationException) {\n // They didn't have permission.\n }\n }\n\n return $this->response->withArray($deletedIds);\n }\n\n public function update(Request $request, Activity $activity)\n {\n $this->authorize('updateMetadata', $activity);\n\n $request->validate([\n 'title' => 'string|max:250',\n 'category_id' => 'uuid:playbook_categories',\n 'language' => [\n new In(\n LanguageDialect::query()\n ->with('language')\n ->cursor()\n ->map(static function (LanguageDialect $languageDialect): string {\n return $languageDialect->getLanguageLocale();\n })\n ->all()\n ),\n ],\n ]);\n\n if ($request->has('title')) {\n $activity->title = $request->input('title');\n }\n\n if ($request->has('category_id')) {\n $category = PlaybookCategory::uuid($request->input('category_id'));\n\n if ($category->playbook->team_id !== $request->user()->team_id) {\n return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n if ($request->has('language')) {\n if (! $activity->isInProgress()) {\n return $this->response->withError(\n 'Activity language can only be set while the meeting is in progress.',\n 400\n );\n }\n\n $activity->setLanguageCode($request->input('language'));\n }\n\n $activity->save();\n\n return $this->response->withOk();\n }\n\n // XXX: This should be merged with the update method.\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws SocialAccountTokenInvalidException\n *\n * @return mixed\n */\n public function summarize(Activity $activity): mixed\n {\n $this->logger->info('[Log Activity] Summarizing activity ', [\n 'activityId' => $activity->getUuid(),\n 'payload' => $this->request->all(),\n ]);\n $this->authorize('update', $activity);\n\n $this->logger->info('[Log Activity] Validating summary');\n // Validate the payload.\n $this->validateSummary($activity);\n\n // All objects must belong to this team.\n /** @var User $user */\n $user = $this->request->user();\n $team = $user->getTeam();\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n try {\n $crmUser = $user;\n if ($user->isCrmRequired() === false) {\n $crmUser = $team->owner;\n }\n $crmService->setUser($crmUser);\n } catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());\n }\n\n $rawEntities = $this->request->input('entities');\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid(\n $this->request->input('layout_id')\n );\n\n // Delay execution of CRM jobs to avoid locking issues.\n $jobDelay = 0;\n\n // If we have arrived from a notification, mark it as read.\n $notificationId = $this->request->input('nId');\n if ($notificationId) {\n $notification = $user->unreadNotifications->where('id', $notificationId)->first();\n\n if ($notification) {\n $notification->markAsRead();\n }\n }\n\n $title = $this->request->input('title');\n $prospects = $this->request->input('prospects');\n $opportunityId = $this->request->input('opportunity_id');\n $stageId = $this->request->input('stage_id');\n $categoryId = $this->request->input('category_id');\n $summary = $this->request->input('summary');\n $crmProviderId = $this->request->input('crm_id');\n $isInternal = $this->request->input('is_internal') ?? false;\n\n $lead = null;\n $category = null;\n $account = null;\n $contact = null;\n $opportunity = null;\n $stage = null;\n $callStage = null;\n\n foreach ($prospects as $prospectData) {\n $objectId = $prospectData['id'];\n\n if ($objectId === null) {\n continue;\n }\n\n $objectType = $prospectData['type'];\n $this->logger->info('debug', ['prospect_data' => $prospectData]);\n\n try {\n if ($objectType === null) {\n $this->logger->info('no object type');\n if ($crmService instanceof SupportsObjectTypeParseInterface) {\n $objectType = $crmService->parseObjectType($objectId);\n }\n }\n\n switch ($objectType) {\n case 'lead':\n $this->logger->info('Processing lead');\n /** @var Lead|null $lead */\n $lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();\n\n // Lead does not exist locally, import it.\n if ($lead === null) {\n $this->logger->info('Lead does not exist locally');\n /** @var Lead $lead */\n $lead = $crmService->syncLead($objectId);\n }\n\n $this->logger->info('Lead found', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n if ($stageId === null) {\n $this->logger->info('Stage ID is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $lead->stage;\n\n break;\n }\n\n $this->logger->info('Looking for stage');\n // Determine if they have changed the stage.\n /** @var Stage $stage */\n $stage = $team->crm->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_LEAD)\n ->firstOrFail();\n\n $this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);\n if ($lead->stage_id && $lead->stage_id !== $stage->id) {\n $this->logger->info('Stage has changed');\n // Storage current stage on activity.\n $callStage = $lead->stage;\n\n // The stage has changed, update in remote CRM.\n dispatch(new UpdateStage($activity, $lead, $callStage, $stage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing lead stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->getName(),\n $stage->getName()\n ),\n [\n 'user' => $user->getUuid(),\n 'lead' => $lead->getUuid(),\n ]\n );\n } else {\n $this->logger->info('Stage has not changed');\n // Stage remains as current.\n $callStage = $stage;\n }\n\n break;\n\n case 'account':\n $this->logger->info('Processing account');\n // If the object is not a lead, it should be an account.\n $account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();\n\n // Account does not exist locally, import it.\n if ($account === null) {\n $this->logger->info('Account does not exist locally');\n $account = $crmService->syncAccount($objectId);\n }\n\n $this->logger->info('Account found', ['accountId' => $account->id]);\n\n break;\n case 'contact':\n $this->logger->info('processing contact');\n $contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();\n\n // Contact does not exist locally, import it.\n if (! $contact instanceof Contact) {\n $this->logger->info('contact does not exist locally');\n $contact = $crmService->syncContact($objectId);\n }\n\n $this->logger->info('resolving account');\n $account = $this->resolveAccount($team, $contact, $crmService, $prospects);\n\n break;\n }\n\n // If they have specified an opportunity, retrieve this with stage.\n if ($opportunityId) {\n $this->logger->info('opportunity id is set');\n $opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();\n\n // Opportunity does not exist locally, import it.\n if ($opportunity === null) {\n $this->logger->info('opportunity does not exist locally');\n $opportunity = $crmService->syncOpportunity($opportunityId);\n }\n\n if ($stageId === null) {\n $this->logger->info('stage id is null');\n // If it was not provided, just assume it is the current stage.\n $callStage = $opportunity->stage ?? null;\n } else {\n $this->logger->info('looking for stage');\n /** @var ?Stage $opportunityStage */\n $opportunityStage = $team->crm\n ->stages()\n ->uuid($stageId, false)\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->first();\n\n // There is a chance we still cannot import this opportunity.\n if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {\n $this->logger->info('opportunity stage has changed');\n // Storage current stage on activity.\n $callStage = $opportunity->stage;\n\n dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));\n\n $this->logger->info(\n sprintf(\n '[%s] User changing opportunity stage from %s to %s',\n $crmService->getDisplayName(),\n $callStage->name,\n $opportunityStage->name\n ),\n [\n 'userId' => $user->id_string,\n 'opportunityId' => $opportunity->id_string,\n ]\n );\n } else {\n $this->logger->info('opportunity stage has not changed');\n // Stage remains as current.\n $callStage = $opportunityStage;\n }\n }\n }\n\n if ($crmProviderId) {\n // Cast $crmProviderId to string otherwise it won't use database index for some records\n $linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();\n\n // Check if this activity has already been assigned to a different activity.\n if ($linkedActivity && $linkedActivity->id !== $activity->id) {\n throw new InvalidArgumentException(\n 'Sorry, the linked task has already been logged under a different call. '\n . 'Please choose another linked task.'\n );\n }\n }\n } catch (InvalidArgumentException $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorWrongArgs($exception->getMessage());\n } catch (Exception $exception) {\n $this->logger->error('Failed to process prospect', [\n 'prospect_data' => $prospectData,\n 'reason' => $exception->getMessage(),\n ]);\n\n // Return a JSON response with the response array and status code.\n return $this->response->errorInternalError(\n 'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'\n );\n }\n }\n\n if ($categoryId) {\n $category = PlaybookCategory::uuid($categoryId);\n\n if ($category->playbook->team_id !== $team->id) {\n throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');\n }\n\n $activity->playbook_category_id = $category->id;\n }\n\n $this->logger->info('Prospect data', [\n 'lead_id' => $lead?->getId(),\n 'account_id' => $account?->getId(),\n 'contact_id' => $contact?->getId(),\n 'opportunity_id' => $opportunity?->getId(),\n 'stage_id' => $stage?->getId(),\n ]);\n\n if ($title) {\n $activity->title = $title;\n }\n\n if ($summary) {\n $activity->summary = $summary;\n }\n\n if ($crmProviderId) {\n $activity->crm_provider_id = $crmProviderId;\n }\n\n if ($callStage) {\n $this->logger->info('Setting stage id', ['stageId' => $callStage->id]);\n $activity->stage_id = $callStage->id;\n }\n\n if ($lead) {\n $this->logger->info('Setting lead id', ['leadId' => $lead->id]);\n $activity->lead_id = $lead->id;\n\n // If we are changed from an account > lead, unset the account data.\n $this->logger->info('Unsetting account id, opportunity id, contact id, value');\n $activity->account_id = null;\n $activity->opportunity_id = null;\n $activity->contact_id = null;\n $activity->value = null;\n }\n\n if ($account) {\n $this->logger->info('Setting account id', ['accountId' => $account->id]);\n $activity->account_id = $account->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('unsetting lead id');\n $activity->lead_id = null;\n\n // Unset the contact if switching different accounts. Will be set up below if still applicable.\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {\n $this->logger->info('Unsetting contact id');\n $activity->contact_id = null;\n }\n }\n\n if ($opportunity) {\n $this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);\n $this->logger->info('unsetting lead id');\n $activity->opportunity_id = $opportunity->id;\n $activity->value = $opportunity->value;\n\n // If we are changed from an lead > account, unset the lead data.\n $activity->lead_id = null;\n }\n\n if ($contact) {\n $this->logger->info('setting contact id', ['contactId' => $contact->id]);\n $activity->contact_id = $contact->id;\n\n // If we are changed from an lead > account, unset the lead data.\n $this->logger->info('Unsetting lead id');\n $activity->lead_id = null;\n }\n\n $activity->is_internal = $isInternal;\n $activity->save();\n $activity->refresh();\n\n $this->logger->notice('Activity saved', [\n 'activity_id' => $activity->getId(),\n 'lead_id' => $activity->lead_id,\n 'account_id' => $activity->account_id,\n 'contact_id' => $activity->contact_id,\n 'opportunity_id' => $activity->opportunity_id,\n 'stage_id' => $activity->stage_id,\n 'crm_provider_id' => $activity->getCrmProviderId(),\n ]);\n\n // Store entities as field data on the activity.\n $updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);\n\n if ($activity->isLoggable()) {\n // Follow-up Task or Event data.\n $followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);\n\n $this->logger->info('CRM LOG manual log triggered', [\n 'activityId' => $activity->getUuid(),\n 'followupData' => $followupData,\n 'userId' => $user->getUuid(),\n ]);\n\n // Store data in the CRM.\n // ++add check for crm_required\n $job = new SaveActivity($activity, $followupData);\n\n if ($updatedData) {\n $job->delay(Carbon::now()->addMinutes($jobDelay));\n }\n\n dispatch($job);\n\n // Manually dispatch log for Opportunity or Prospect added\n if ($activity->hasOpportunity() || $activity->hasProspect()) {\n event(new ActivityProspectAdded(\n activity: $activity,\n eventSource: 'manually-log-crm-data'\n ));\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.\n *\n * @param ServiceInterface $service\n * @param Activity $activity\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array\n {\n $updatedData = [];\n $existingData = $activity->data()->get();\n\n // We need to delete any existing data to overwrite with latest values.\n $activity->data()->delete();\n\n $layoutEntities = $layout->entities()\n ->with('field', 'parent')\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->get();\n\n /** @var LayoutEntity $entity */\n foreach ($layoutEntities as $entity) {\n // If the user has provided a value for this entity\n if (array_key_exists($entity->id_string, $entities)) {\n $value = $entities[$entity->id_string];\n\n // Convert raw data into values that the CRM can consume.\n if ($value) {\n $value = $service->normalizeValue($entity->field->type, $value);\n }\n\n // Check the field is part of the activity-summary section.\n if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {\n // This is the internal database ID, not the external CRM ID.\n $objectId = null;\n\n switch ($entity->field->object_type) {\n case Field::OBJECT_ACCOUNT:\n $objectId = $activity->account_id;\n\n break;\n\n case Field::OBJECT_CONTACT:\n $objectId = $activity->contact_id;\n\n break;\n\n case Field::OBJECT_OPPORTUNITY:\n $objectId = $activity->opportunity_id;\n\n break;\n\n case Field::OBJECT_LEAD:\n $objectId = $activity->lead_id;\n\n break;\n\n case Field::OBJECT_TASK:\n case Field::OBJECT_EVENT:\n $objectId = $activity->id;\n\n break;\n }\n\n if ($objectId) {\n /** @var FieldData $data */\n $data = $activity->data()->create([\n 'crm_layout_entity_id' => $entity->id,\n 'crm_field_id' => $entity->crm_field_id,\n 'object_type' => $entity->field->object_type,\n 'object_id' => $objectId,\n 'value' => $value,\n ]);\n\n // Never send read-only field data to the CRM.\n if ($entity->read_only === false && $entity->is_visible) {\n $existingValue = $existingData\n ->where('crm_layout_entity_id', $entity->id)\n ->where('crm_field_id', $entity->crm_field_id)\n ->where('object_type', $entity->field->object_type)\n ->where('object_id', $objectId)\n ->first();\n\n // If the field was actually changed, we need to reflect this in the CRM too.\n if ($existingValue === null || $existingValue->value !== $value) {\n $updatedData[] = $data->id;\n }\n }\n }\n }\n }\n }\n\n return $updatedData;\n }\n\n /**\n * Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.\n *\n * @param ServiceInterface $crmService\n * @param Layout $layout\n * @param array $entities The raw entity data from user\n *\n * @return array\n */\n private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array\n {\n $fieldData = [];\n foreach ($entities as $entityId => $value) {\n // Only bother with fields that have a value.\n if ($value) {\n // Extract the entity from the UUID. Check the field is valid and part of the follow-up section.\n $entity = $layout->entities()\n ->uuid($entityId, false)\n ->whereHas('parent', function ($query) {\n $query->where('label', 'follow-up');\n })\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->first();\n\n if ($entity) {\n // Convert raw data into values that the CRM can consume.\n $value = $crmService->normalizeValue($entity->field->type, $value);\n\n // Add the field and value to the payload.\n $fieldData += [\n $entity->field->crm_provider_id => $value,\n ];\n }\n }\n }\n\n return $fieldData;\n }\n\n /**\n * @param Activity $activity\n */\n private function validateSummary(Activity $activity): void\n {\n $team = $activity->user->team;\n $crmProvider = $team->crm->provider;\n $attributes = [];\n\n $rules = [\n 'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,\n 'title' => 'string|max:250',\n 'prospects' => 'required|array',\n 'opportunity_id' => new CrmReference($crmProvider),\n 'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',\n 'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator\n 'summary' => 'max:50000',\n 'nId' => 'exists:notifications,id',\n 'crm_id' => new CrmReference($crmProvider),\n 'entities' => 'array',\n 'is_internal' => 'boolean',\n ];\n\n /** @var Layout $layout */\n $layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));\n\n // Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.\n $entities = $layout->entities()\n ->where('read_only', 0)\n ->whereHas('field', function ($query) {\n $query->where('is_selectable', 1);\n })\n ->whereHas('parent', function ($query) use ($activity) {\n if ($activity->isLoggable() === false) {\n $query->where('label', '<>', 'follow-up');\n }\n });\n\n $isInternal = $this->request->input('is_internal', false);\n\n foreach ($entities->get() as $entity) {\n $rules += $this->buildFieldValidator($entity, $isInternal);\n $attributes += $this->buildFieldMessage($entity);\n }\n\n $this->request->validate($rules, [], $attributes);\n }\n\n private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array\n {\n return [\n 'entities.' . $entity->id_string => $entity->getValidator($isInternal),\n ];\n }\n\n /**\n * @param LayoutEntity $entity\n *\n * @return array\n */\n private function buildFieldMessage(LayoutEntity $entity): array\n {\n $label = $entity->label;\n if ($label === null) {\n $label = $entity->field->label;\n }\n\n return [\n 'entities.' . $entity->id_string => $label,\n ];\n }\n\n public function search(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->debugLog(\n $user,\n 'User extracted from request',\n ['user' => $user->getId(), 'tz' => $user->getTimezone()]\n );\n\n $searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());\n\n $this->debugLog(\n $user,\n 'ActivitySearch criteria built',\n ['searchCriteria' => $searchCriteria]\n );\n\n $filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);\n\n $this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);\n\n $this->validateSearch($request, $filterSet);\n\n $this->debugLog($user, 'Request validated');\n\n $searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);\n\n /** @var Collection<Activity> $activities */\n $activities = $searchResponse['results'];\n\n $this->debugLog($user, 'Activities ES response extracted');\n\n $hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(\n $user->getTeamId(),\n TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),\n );\n\n if ($hideInternalMeetingsSetting?->getValue() === '1') {\n $activities = $activities->filter(function (Activity $activity) {\n if ($activity->is_internal && empty($activity->actual_start_time)) {\n return false;\n }\n\n return true;\n });\n }\n\n $this->debugLog($user, 'Internal meetings (?!) filtered');\n\n $this->response->getManager()\n ->parseIncludes([\n 'category',\n 'organizer.group',\n 'prospect',\n 'stage',\n 'opportunity',\n 'stats',\n 'scorecards',\n 'masterTrack',\n 'activeParticipants',\n 'notification',\n ])\n ->setSerializer(new JsonSerializer());\n\n $transformerExcludes = $this->request->input('exclude');\n if ($transformerExcludes) {\n $this->response->getManager()->parseExcludes($transformerExcludes);\n }\n\n $this->debugLog($user, 'Response Manager (?!) applied');\n\n $transformer = new ActivityTransformer();\n $transformer->setConsumer($user);\n\n $this->debugLog($user, 'Activity Transformer added');\n\n $resource = new \\League\\Fractal\\Resource\\Collection($activities, $transformer);\n $page = $searchCriteria->getPageNumber();\n\n $this->debugLog($user, 'Search criteria page number called', ['page' => $page]);\n\n $histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');\n\n $this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);\n\n return $this->response->withArray([\n 'pagination' => [\n 'total' => $searchResponse['totalHits'],\n 'current' => $page,\n 'prev' => max($page - 1, 1),\n 'next' => $page + 1,\n ],\n 'results' => $this->response->getManager()->createData($resource)->toArray(),\n 'histogram' => $histogram,\n ]);\n }\n\n private function debugLog(User $user, string $logMessage, ?array $context = []): void\n {\n // Debug for Learning People Only\n if ($user->getTeamId() !== 260) {\n return;\n }\n\n Log::notice(\n sprintf('[activity-search-controller] %s', $logMessage),\n $context\n );\n }\n\n /** @throws ValidationException */\n private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void\n {\n $rules = [\n 'exclude' => 'array',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ];\n\n if ($prefix !== null && mb_strpos($prefix, '.') !== false) {\n $rules[rtrim($prefix, '.')] = sprintf(\n 'required|array|max:%d',\n $filterSet->count()\n );\n }\n\n $validationRules = $filterSet->getValidationRules($prefix)\n ->merge($rules)\n ->all();\n\n $request->validate($validationRules);\n }\n\n public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $search = $this->updateOrCreateActivitySearch($request);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function updateActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('update', $search);\n\n $this->updateOrCreateActivitySearch($request, $search);\n\n return $this->response->withOk();\n }\n\n private function storeNamedSearchFilters(\n Collection $request,\n Search $search,\n FilterDefinitionCollection $filterSet,\n ?string $prefix = null,\n ): self {\n $arrayTypeProperties = $filterSet\n ->getPropertyTypes([\n FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,\n ])\n ->all();\n\n $supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);\n\n foreach ($supportedRequestProperties as $requestPropertyName) {\n if (! array_has($request, $requestPropertyName)) {\n continue;\n }\n\n /** @var string|string[] $propertyValue */\n $propertyValue = array_get($request, $requestPropertyName);\n $propertyName = $prefix === null\n ? $requestPropertyName\n : mb_substr($requestPropertyName, mb_strlen($prefix));\n\n $isArrayType = array_has($arrayTypeProperties, $propertyName);\n\n if (! $isArrayType) {\n /** @var string $requestPropertyValue */\n\n $search->filters()->updateOrCreate(\n [\n 'filter' => $propertyName,\n ],\n [\n 'value' => $propertyValue,\n ]\n );\n\n continue;\n }\n\n /** @var string[] $requestPropertyValue */\n\n /** @var SearchFilter[]|Collection $existingFilterValues */\n $existingFilterValuesKeyed = $search->filters()\n ->where('filter', $propertyName)\n ->get()\n ->keyBy('id');\n\n // Iterate over values provided as request parameters\n foreach ($propertyValue as $value) {\n /** @var SearchFilter|null $valueFilter */\n $valueFilter = $search->filters()\n ->where(\n [\n 'filter' => $propertyName,\n 'value' => $value,\n ]\n )\n ->first();\n\n if ($valueFilter !== null) {\n // Remove filter value pair from list to be deleted\n $existingFilterValuesKeyed->forget($valueFilter->id);\n } else {\n // Add new filter/value pair\n $search->filters()->updateOrCreate([\n 'filter' => $propertyName,\n 'value' => $value,\n ]);\n }\n }\n\n // Delete filter value pairs for this filter that no longer exist in request parameters\n foreach ($existingFilterValuesKeyed as $existingFilter) {\n $existingFilter->delete();\n }\n }\n\n /** @var Collection<int, SearchFilter> $filtersKeyed */\n $filtersKeyed = $search->filters()->get()->keyBy('filter');\n\n // wipe removed filters from this search\n foreach ($filtersKeyed as $filterName => $filter) {\n if (array_has($request, $prefix . $filterName)) {\n continue;\n }\n\n // Remove all filter values for this filter\n $search->filters()->where('filter', $filterName)->delete();\n }\n\n return $this;\n }\n\n /**\n * @throws AuthorizationException\n */\n public function fetchActivitySearch(\n Search $search,\n Request $request,\n SearchTransformer $searchTransformer,\n ): JsonResponse {\n $this->authorize('view', $search);\n\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem(\n $search,\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection(\n $user->searches()->get(),\n $searchTransformer\n ->withConsumer($user)\n );\n }\n\n /**\n * Deletes a saved search\n *\n * @param Request $request\n * @param Search $search\n *\n * @throws Exception\n *\n * @return JsonResponse\n */\n public function deleteActivitySearch(Request $request, Search $search): JsonResponse\n {\n $this->authorize('delete', $search);\n\n $search->filters()->delete();\n $search->delete();\n\n return $this->response->withOk();\n }\n\n public function live(Request $request, ElasticActivityRepository $repository): JsonResponse\n {\n $user = $this->getUserFromRequest($request);\n\n $this->request->validate([\n 'sort_direction' => 'in:asc,desc',\n 'limit' => 'integer|min:1|max:50',\n 'page' => 'integer|min:1',\n ]);\n\n $activities = $repository->getLiveCoachingEligibleActivities(\n user: $user,\n lookBackMinutes: self::LOOK_BACK,\n limit: (int) $this->request->input('limit', 25),\n page: (int) $this->request->input('page', 1),\n sortBy: ['actual_start_time', 'scheduled_start_time'],\n sortDirection: (string) $this->request->input('sort_direction', 'asc'),\n );\n\n $this->response\n ->getManager()\n ->parseIncludes(['organizer.group', 'prospect'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($activities, new ActivityTransformer());\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function show(Activity $activity, ActivityService $activityService): JsonResponse\n {\n $this->authorize('show', $activity);\n\n $user = $activity->getUser();\n $team = $user->getTeam();\n\n // Sync the opportunity with the latest data if possible.\n if ($activity->opportunity_id) {\n try {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n\n if (! $user->isCrmRequired()) {\n $crmService->setUser($team->getOwner());\n } else {\n $crmService->setUser($user);\n }\n\n $crmService->syncOpportunity($activity->opportunity->crm_provider_id);\n } catch (Exception $exception) {\n // Move on.\n }\n }\n\n $activityData = $activityService->getActivityData($this->request->user(), $activity);\n\n return response()->json($activityData);\n }\n\n public function createRecording(Activity $activity)\n {\n $this->authorize('record', $activity);\n\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Tell Twilio to start recording this activity.\n if ($activity->recording_state === Activity::RECORDING_OFF) {\n $job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withCreated();\n }\n\n return $this->response->errorGone('Activity is already recording.');\n }\n\n public function updateRecording(Request $request, Activity $activity)\n {\n $this->authorize('record', $activity);\n\n $request->validate([\n 'preference' => 'boolean',\n 'state' => [\n 'string',\n Rule::in([\n Activity::RECORDING_IN_PROGRESS,\n Activity::RECORDING_PAUSED,\n ]),\n ],\n ]);\n\n if ($request->has('state')) {\n if ($activity->hasRecordingReasonComplianceRestricted()) {\n return $this->response->errorGone('Recording this number has been disabled by your organization.');\n }\n\n // Toggle the recording state between paused and resumed.\n if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {\n $job = (new ToggleRecording($activity, $request->input('state')))\n ->onQueue(Constants::QUEUE_CONFERENCES);\n\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Recording is not toggleable.');\n }\n\n if ($request->has('preference')) {\n $activity->update([\n 'recording_preference' => $request->input('preference') ? 1 : 0,\n ]);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorWrongArgs('Something went wrong');\n }\n\n public function stopRecording(Activity $activity)\n {\n $this->authorize('stopRecord', $activity);\n\n // Tell Twilio to stop recording this activity.\n if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {\n $job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);\n dispatch($job);\n\n return $this->response->withOk();\n }\n\n return $this->response->errorGone('Activity is not recording.');\n }\n\n /**\n * Add activity to this user's favorites playlist\n *\n * @throws AuthorizationException\n */\n public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse\n {\n $this->authorize('favorite', $activity);\n\n $user = $this->getUserFromRequest($this->request);\n $favorite = $activity->wasFavoritedBy($user);\n $name = $activity->activity_title ?? '';\n\n // It needs to check at least one record.\n if (! $favorite) {\n $favoritePlaylist = $user->favoritePlaylist();\n\n $playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(\n $activity,\n $user,\n $favoritePlaylist\n );\n\n if ($playlistActivity !== null) {\n $playlistActivity->update(\n // Just update, don't sort.\n ['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],\n );\n } else {\n $playlistActivity = $activity->playlistActivities()->create([\n 'playlist_id' => $favoritePlaylist->getId(),\n 'user_id' => $user->getId(),\n 'start_time' => 0,\n 'name' => mb_strimwidth($name, 0, 100),\n ]);\n // Sort it on top.\n $playlistActivity->update(\n [\n 'sort' => $playlistActivityRepository->calculateNewSortOrder(\n null,\n $playlistActivity,\n ),\n ],\n );\n }\n\n $playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);\n\n return new JsonResponse([], JsonResponse::HTTP_CREATED);\n }\n\n return new JsonResponse(\n [\n 'error' => [\n 'code' => AbstractResponse::CODE_CONFLICT,\n 'http_code' => JsonResponse::HTTP_CONFLICT,\n 'message' => 'Resource Already Exists',\n ],\n ],\n JsonResponse::HTTP_CONFLICT,\n );\n }\n\n /**\n * Remove activity from this user's favorites playlist\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unfavorite(Activity $activity)\n {\n $user = $this->request->user();\n\n $favorites = $activity->favoritedBy($user);\n\n if ($favorites && $favorites->isEmpty()) {\n return $this->response->errorNotFound('Favorite not found.');\n }\n\n $this->authorize('unfavorite', [$activity, $favorites]);\n\n // When you unfavorite an activity,\n // it should remove all the activities in it, including snippets.\n $isDeleted = $favorites->each(function ($favorite) {\n $favorite->forceDelete();\n });\n\n if ($isDeleted) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not remove favorite.');\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function notify(Activity $activity)\n {\n $this->authorize('notify', $activity);\n\n $user = $this->request->user();\n\n $existingNotification = $activity->availabilityNotifications()\n ->where('user_id', $user->id)\n ->exists();\n\n if ($existingNotification) {\n return $this->response->errorWrongArgs('Notification is already configured.');\n }\n\n $notification = Activity\\AvailabilityNotification::create([\n 'user_id' => $user->id,\n 'activity_id' => $activity->id,\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($notification, new AvailabilityNotificationTransformer());\n }\n\n /**\n * @param Activity $activity\n * @param Activity\\AvailabilityNotification $notification\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function unnotify(Activity $activity, Activity\\AvailabilityNotification $notification)\n {\n $this->authorize('unnotify', [$activity, $notification]);\n\n if ($notification->sent_at || $notification->delete()) {\n return $this->response->withNoContent();\n }\n\n return $this->response->errorGone('Could not delete notification.');\n }\n\n public function play(Request $request, Activity $activity)\n {\n $this->authorize('stream', $activity);\n\n $request->validate([\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $activity->plays()->create([\n 'user_id' => $user->getId(),\n 'start_time' => $request->input('start_time'),\n ]);\n\n return $this->response->withCreated();\n }\n\n /**\n * @param Activity $activity\n *\n * @return mixed\n */\n public function comment(Activity $activity)\n {\n return $this->newComment($activity);\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @return mixed\n */\n public function replyComment(Activity $activity, Comment $comment)\n {\n return $this->newComment($activity, $comment);\n }\n\n /**\n * @param Activity $activity\n * @param Comment|null $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n protected function newComment(Activity $activity, ?Comment $comment = null)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n 'type' => 'integer|between:0,3',\n 'visibility' => sprintf('nullable|integer|between:1,%d', count(Comment::getVisibilityLevels())),\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n $threadStartId = null;\n if ($comment) {\n $threadStartId = $comment->thread_start_id ?: $comment->id;\n }\n\n try {\n $newComment = Comment::create([\n 'parent_comment_id' => $comment->id ?? null,\n 'thread_start_id' => $threadStartId,\n 'activity_id' => $activity->id,\n 'user_id' => $this->request->user()->id,\n 'comment' => trim($this->request->input('comment')),\n 'start_time' => $this->request->input('start_time', 0),\n 'end_time' => $this->request->input('end_time', 0),\n 'type' => $this->request->input('type', Comment::TYPE_NEUTRAL),\n 'visibility' => $this->request->input('visibility', Comment::VISIBILITY_PUBLIC),\n ]);\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($newComment, new ActivityCommentTransformer());\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not create comment.' . $exception->getMessage());\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function updateComment(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'comment' => 'required|between:1,5000',\n //'start_time' => 'numeric|between:0,'.$activity->duration,\n //'end_time' => 'required_with:start_time|greater_than_or_equal:start_time|numeric|between:0,'.$activity->duration,\n ]);\n\n try {\n $comment->update([\n 'comment' => trim($this->request->input('comment')),\n ]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment.');\n }\n }\n\n public function updateCommentVisibility(Activity $activity, Comment $comment)\n {\n $this->authorize('comment', [$activity, $comment]);\n\n $this->request->validate([\n 'visibility' => sprintf('integer|between:1,%d', count(Comment::getVisibilityLevels())),\n ]);\n\n $visibility = $this->request->input('visibility');\n\n if ($comment->parent !== null) {\n return $this->response->errorWrongArgs('Comment visibility can only be updated on top level comments.');\n }\n\n try {\n $this->activityCommentService->updateCommentVisibility($comment, $visibility);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withOk();\n } catch (Exception $exception) {\n Sentry::captureException($exception);\n\n return $this->response->errorInternalError('Could not update comment\\'s visibility.');\n }\n }\n\n /**\n * @param Activity $activity\n * @param Comment $comment\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function deleteComment(Activity $activity, Comment $comment)\n {\n $this->authorize('deleteComment', [$activity, $comment]);\n\n // Delete comment and any children.\n $comment->delete();\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function fetchComments()\n {\n $user = $this->request->user();\n $this->request->validate([\n 'forUserId' => 'uuid:users,team_id,' . $user->team_id,\n 'types' => 'array',\n 'types.*' => 'integer|between:0,3',\n ]);\n $forUser = null;\n\n $types = [Comment::TYPE_NEUTRAL, Comment::TYPE_GAME_CHANGER, Comment::TYPE_POSITIVE];\n $user = $this->request->user();\n if ($this->request->has('forUserId')) {\n $forUser = $user->team->users()->uuid($this->request->input('forUserId'));\n }\n\n $comments = Comment::query()\n ->whereHas('activity', static function (Builder $builder) use ($user, $forUser): void {\n $builder\n // I left feedback on my own activity; or\n ->where('activities.user_id', $user->getId());\n if ($forUser) {\n // I left feedback on any activity for this user.\n $builder->orWhere([\n 'user_id' => $user->getId(),\n 'activities.user_id' => $forUser->getId(),\n ]);\n }\n })\n ->whereIn('type', $this->request->input('types', $types))\n ->orderBy('created_at', 'desc')\n ->get();\n\n $this->response\n ->getManager()\n ->parseIncludes(['activity', 'user'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($comments, new ActivityCommentTransformer());\n }\n\n public function deleteCoachingFeedback(Activity $activity, CoachingFeedback $coachingFeedback)\n {\n $this->authorize('deleteCoachingFeedback', [$activity, $coachingFeedback]);\n $activity = $coachingFeedback->getActivity();\n if ($coachingFeedback->delete()) {\n $activity->documentUpdate();\n\n return $this->response->withOk();\n }\n\n return $this->response->withError('Delete opration failed. Contact support.', 500);\n }\n\n /**\n * Add new or update Coaching feedback\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n * @throws \\Illuminate\\Validation\\ValidationException\n *\n * @return mixed\n */\n public function putCoachingFeedback(Request $request, Activity $activity)\n {\n $user = $request->user();\n\n if (! $user instanceof User) {\n abort(403);\n }\n $teamId = $user->getTeamId();\n\n $this->authorize('coach', $activity);\n\n $this->request->validate([\n 'coach_id' => 'required|uuid:users,team_id,' . $teamId,\n 'coachee_id' => 'required|uuid:users,team_id,' . $teamId,\n 'visibility' => ['required', Rule::in(CoachingFeedback::VISIBILITIES)],\n 'coaching_sections.*.uuid' => 'required|uuid:coaching_sections',\n 'coaching_sections.*.score' => ['required', Rule::in(CoachingSectionFeedback::SCORES)],\n 'coaching_sections.*.summary' => 'string|max:10000',\n 'coaching_sections.*.criteria.*.uuid' => 'required|uuid:coaching_section_criteria',\n 'coaching_sections.*.criteria.*.note' => 'required|string|max:10000',\n 'sharedWithUsers' => [\n 'required_if:visibility,' . CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS,\n 'array',\n ],\n 'sharedWithUsers.*' => [\n 'uuid:users,team_id,' . $teamId,\n ],\n ]);\n\n /** @var User $coach */\n $coach = User::uuid($this->request->input('coach_id'));\n /** @var User $coachee */\n $coachee = User::uuid($this->request->input('coachee_id'));\n $coachingSectionFeedbacks = $this->request->input('coaching_sections');\n\n $previousRecord = $this->coachingFeedbackRepository->getOneForActivityByCoacheeAndCoach(\n $coachee->getId(),\n $coach->getId(),\n $activity->getId()\n );\n $recordIsNew = false;\n if ($previousRecord === null) {\n $recordIsNew = true;\n }\n\n if (! $coachee->isSameTeamId($coach)) {\n return $this->response->errorForbidden('User not member of your team.');\n }\n\n if (! is_array($coachingSectionFeedbacks) || count($coachingSectionFeedbacks) < 1) {\n return $this->response->withError('At least one Coaching Framework Section shall be scored.', 422);\n }\n\n if (! $activity->participants()->where('participants.user_id', $coachee->id)->exists()) {\n return $this->response->withError('Coached user did not participate activity.', 422);\n }\n\n $visibility = $this->request->input('visibility');\n\n $shouldSendNotification = $recordIsNew;\n if ($recordIsNew === false && $visibility !== $previousRecord->getVisibility()) {\n $shouldSendNotification = true;\n }\n\n /**\n * Create CoachingFeedback\n *\n * @var CoachingFeedback $coachingFeedback\n */\n $coachingFeedback = $activity->coachingFeedbacks()->updateOrCreate(\n [\n 'coach_id' => $coach->id,\n 'coachee_id' => $coachee->id,\n ],\n [\n 'framework_id' => $activity->category->id,\n 'visibility' => $visibility,\n ]\n );\n\n $sharedUserIds = [];\n if ($visibility === CoachingFeedback::VISIBLE_TO_SPECIFIC_USERS) {\n foreach ($this->request->input('sharedWithUsers') as $sharedWithUserUuid) {\n /** @var User $user */\n $user = User::uuid($sharedWithUserUuid);\n $sharedUserIds[] = $user->getId();\n }\n }\n\n $syncResult = $coachingFeedback->customAccessUsers()->sync($sharedUserIds);\n\n $scores = [];\n\n\n /**\n * Create CoachingSectionsFeedbacks.\n *\n * @var CoachingSectionFeedback $coachingSectionFeedback\n */\n foreach ($coachingSectionFeedbacks as $coachingSectionFeedbackInput) {\n $coachingSection = CoachingSection::uuid($coachingSectionFeedbackInput['uuid']);\n $coachingSectionFeedback = $coachingFeedback->sectionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_id' => $coachingSection->id,\n ],\n [\n 'score' => array_get($coachingSectionFeedbackInput, 'score'),\n 'summary' => array_get($coachingSectionFeedbackInput, 'summary') ?? '',\n ]\n );\n\n $scores[] = array_get($coachingSectionFeedbackInput, 'score');\n\n $criteria = array_get($coachingSectionFeedbackInput, 'criteria');\n if (is_array($criteria) && ! empty($criteria)) {\n foreach ($criteria as $criteriaFeedbackInput) {\n $coachingSectionFeedback->criterionFeedbacks()->updateOrCreate(\n [\n 'coaching_section_criterion_id' => CoachingSectionCriterion::uuid(array_get($criteriaFeedbackInput, 'uuid'))\n ->id,\n ],\n ['note' => array_get($criteriaFeedbackInput, 'note')],\n );\n }\n }\n }\n\n $coachingFeedback->average_score = array_sum($scores) / count($scores);\n\n if ($recordIsNew === false && $coachingFeedback->getAverageScore() !== $previousRecord->getAverageScore()) {\n $shouldSendNotification = true;\n }\n if (! empty($syncResult['attached']) || ! empty($syncResult['detached']) || ! empty($syncResult['updated'])) {\n $shouldSendNotification = true;\n }\n\n $coachingFeedback->save();\n // ensure updated at for coaching feedback on section feedback summary added.\n $coachingFeedback->touch();\n\n if ($shouldSendNotification) {\n event(new Coached($coachingFeedback));\n }\n\n Datadog::increment('jiminny.activity.score.update', 1, ['company' => $activity->user->team->slug]);\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n $coachingFeedbackTransformer = new CoachingFeedbackTransformer();\n $coachingFeedbackTransformer->setConsumer($this->getUserFromRequest($request));\n\n return $this->response->withItem($coachingFeedback, $coachingFeedbackTransformer);\n }\n\n\n /**\n * Retrieve category criteria for coaching.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachingSections(Activity $activity)\n {\n $this->authorize('coach', $activity);\n\n if ($activity->category === null) {\n return $this->response->errorUnprocessable('Category has not yet been assigned.');\n }\n\n $criteria = $activity\n ->category\n ->coachingSections()\n ->where('is_enabled', 1)\n ->orderBy('sequence', 'asc');\n\n $this->response\n ->getManager()\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withCollection($criteria->get(), new CoachingSectionsTransformer());\n }\n\n /**\n * @throws AuthorizationException\n * @throws ValidationException\n *\n * @return mixed\n */\n public function addToPlaylist(Activity $activity, PlaylistTrackFactoryInterface $playlistTrackFactory)\n {\n $this->request->validate([\n 'playlists' => 'required|array',\n 'playlists.*' => 'uuid:playlists',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'name' => 'required|max:100',\n ]);\n\n $this->authorize('addToPlaylist', [$activity, $this->request->input('playlists')]);\n\n $startTime = $this->request->input('start_time');\n $endTime = $this->request->input('end_time');\n $name = $this->request->input('name');\n /** @var User $user */\n $user = $this->request->user();\n\n // Get playlist by uuid.\n foreach ($this->request->input('playlists') as $playlistId) {\n // Pull out the playlist model.\n $playlist = Playlist::uuid($playlistId);\n\n $playlistTrackFactory->createTrack($playlist, $user, [\n 'name' => $name,\n 'activity' => $activity,\n 'start_time' => $startTime,\n 'end_time' => $endTime,\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function share(Request $request, Activity $activity): JsonResponse\n {\n $this->authorize('share', $activity);\n\n $request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'recipients.*.type' => 'in:user,group',\n 'recipients.*.id' => 'string|max:40',\n 'share' => 'string|max:255',\n ]);\n\n $user = $request->user();\n\n $recipients = $request->get('recipients');\n $users = $this->userService->convertRecipientsToUsers($user, $recipients);\n\n $shareData = [\n 'from_user_id' => $user->id,\n 'note' => $request->input('note'),\n 'start_time' => $request->input('start_time'),\n 'end_time' => $request->input('end_time'),\n ];\n\n // Create a share object against a notification provider channel\n if ($request->input('share')) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'notification_provider_channel' => $request->input('share'),\n ]\n )\n );\n\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n\n // Create a share object against each recipient\n foreach ($users as $recipient) {\n /** @var Share $share */\n $share = $activity->shares()->create(\n array_merge(\n $shareData,\n [\n 'to_user_id' => $recipient->id,\n ]\n )\n );\n\n // If parent_share_id has been selected yet\n if (! isset($shareData['parent_share_id'])) {\n // All subsequent shares need to reference this row as parent_share_id\n $shareData['parent_share_id'] = $share->id;\n }\n }\n\n return $this->response->withOk();\n }\n\n /**\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function coachRequest(Activity $activity)\n {\n $this->authorize('coachRequest', $activity);\n\n $this->request->validate([\n 'note' => 'string|max:1000',\n 'start_time' => 'numeric|between:0,' . $activity->duration,\n 'end_time' => 'nullable|greater_than_or_equal:start_time|numeric|between:0,' . $activity->duration,\n 'coachers.*.type' => 'required|in:user',\n 'coachers.*.id' => 'required',\n ]);\n\n $coachers = $this->request->get('coachers');\n $user = $this->request->user();\n $users = $this->userService->convertRecipientsToUsers($user, $coachers);\n\n foreach ($users as $coacher) {\n CoachRequest::create([\n 'user_id' => $coacher->id,\n 'activity_id' => $activity->id,\n 'note' => $this->request->get('note'),\n 'start_time' => $this->request->get('start_time'),\n 'end_time' => $this->request->get('end_time'),\n ]);\n }\n\n return $this->response->withOk();\n }\n\n public function createActivityTopicTriggers(Activity $activity, LoggerInterface $logger): HttpFoundation\\JsonResponse\n {\n $this->authorize('analyzeTopicTriggers', $activity);\n\n if (! $activity->hasTranscription()) {\n return new HttpFoundation\\JsonResponse(\n [\n 'error' => 'Transcription not found.',\n ],\n JsonResponse::HTTP_NOT_FOUND\n );\n }\n\n $logger->info(__METHOD__ . ': queued for analysis', [\n 'activity' => $activity->id_string,\n ]);\n\n dispatch(new ActivityAnalytics\\Job\\AnalyzeActivityTopicTriggers($activity));\n\n return new HttpFoundation\\JsonResponse(null, JsonResponse::HTTP_CREATED);\n }\n\n public function fetchActivityTopicTriggers(\n Activity $activity,\n LoggerInterface $logger,\n ActivityTopicTriggerTransformer $transformer\n ): HttpFoundation\\JsonResponse {\n $this->authorize('fetchTopicTriggers', $activity);\n\n $logger->debug(__METHOD__, [\n 'activity' => $activity->id_string,\n ]);\n\n if (! $activity->isProcessed()) {\n return new HttpFoundation\\JsonResponse([]);\n }\n\n $payload = [];\n\n if ($activity->hasTopicTriggers()) {\n $payload = $activity->getTopicTriggersSorted()\n ->map(\n static fn (Activity\\TopicTrigger $activityTopicTrigger): array\n => $transformer->transform($activityTopicTrigger)\n )\n ->values()\n ->all();\n }\n\n return new HttpFoundation\\JsonResponse($payload);\n }\n\n /**\n * @param Activity $activity\n * @param StatsTransformer $statsTransformer\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function stats(Activity $activity, StatsTransformer $statsTransformer)\n {\n $this->authorize('stream', $activity);\n\n if (! $activity->hasTranscription()) {\n return $this->response->errorNotFound('Waveform data is not yet generated.');\n }\n\n $this->response\n ->getManager()\n ->parseIncludes(['wavedata'])\n ->setSerializer(new JsonSerializer());\n\n return $this->response->withItem($activity, $statsTransformer);\n }\n\n public function destroy(Activity $activity)\n {\n $this->authorize('delete', $activity);\n\n $activity->delete();\n\n \\Log::info('Soft delete activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);\n\n return $this->response->withNoContent();\n }\n\n public function note(Activity $activity)\n {\n $this->authorize('note', $activity);\n\n $this->request->validate([\n 'note' => 'required|min:1|max:2000',\n 'time' => 'required|numeric|min:0|max:86400',\n ]);\n\n $note = $this->request->input('note');\n $time = $this->request->input('time');\n\n $this->activityService->setActivity($activity);\n $this->activityService->takeNote($this->getUser(), $note, $time);\n\n return $this->response->withCreated();\n }\n\n /**\n * Mark an activity as private.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPrivate(Activity $activity)\n {\n $this->authorize('markAsPrivate', $activity);\n\n if ($activity->is_private === false) {\n $activity->is_private = true;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * Mark an activity as public.\n *\n * @param Activity $activity\n *\n * @throws AuthorizationException\n *\n * @return mixed\n */\n public function markAsPublic(Activity $activity)\n {\n $this->authorize('markAsPublic', $activity);\n\n if ($activity->is_private) {\n $activity->is_private = false;\n $activity->save();\n\n return $this->response->withOk();\n }\n\n return $this->response->withNoContent();\n }\n\n /**\n * @throws LogicException\n */\n public function fetchCloudFrontS3MediaKeys(Activity $activity, PlaybackService $playbackService): JsonResponse\n {\n $masterTrack = $activity->masterTrack()->first();\n\n if (! $masterTrack instanceof Track) {\n throw new LogicException(sprintf('Master track not found for activity \"%s\"', $activity->getUuid()));\n }\n\n return $this->response->withArray(\n $playbackService->generateCookies(\n $masterTrack,\n $this->request->ip(),\n ),\n );\n }\n\n /**\n * @throws ValidationException\n */\n private function updateOrCreateActivitySearch(Request $request, ?Search $search = null): Search\n {\n $request->validate([\n 'name' => 'required|string|min:2|max:100',\n ]);\n\n $user = $this->getUserFromRequest($request);\n\n $searchName = $request->input('name');\n\n if ($search !== null) {\n $search->update([\n 'name' => $searchName,\n ]);\n\n return $search;\n }\n\n $request->validate([\n 'filters' => ['required', 'array', new MultidimensionalArrayMaxCharRule(limit: 255)],\n 'nudges' => 'array|max:' . count(Nudge::MAP_CHANNEL),\n 'nudges.*.channel' => 'required|in:' . implode(',', Nudge::MAP_CHANNEL),\n 'nudges.*.frequency' => 'required|in:' . implode(',', Nudge::MAP_FREQUENCY),\n 'nudges.*.expiresAt' => [\n 'required',\n 'date',\n 'after:today',\n 'before_or_equal:' . now()->addYear()->format('Y-m-d'),\n ],\n ]);\n\n $searchCriteria = Criteria::createFromRequest(\n Collection::make($request->input('filters', []))->all(),\n $user->getTimezone()\n );\n\n $filterSet = $this->activitySearch->getOnDemandPageFilterSet($searchCriteria, $user);\n $this->validateSearch($request, $filterSet, 'filters.');\n\n /** @var Search $search */\n $search = Search::create([\n 'name' => $searchName,\n 'uuid' => Uuid::uuid4()->toString(),\n 'user_id' => $user->getId(),\n ]);\n\n Collection::make($request->input('nudges', []))\n ->each(fn (array $attributes): Nudge => $this->nudgeFactory->createNudge($search, $attributes));\n\n $this->storeNamedSearchFilters(Collection::make($request->all()), $search, $filterSet, 'filters.');\n\n return $search;\n }\n\n private function resolveAccount(\n Team $team,\n Contact $contact,\n ServiceInterface $crmService,\n array $prospects,\n ): ?Account {\n $this->logger->info('Resolving account from contact');\n $account = $contact->getAccount();\n\n if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS)) {\n $this->logger->info('Team does not have feature to link activity to multiple prospects');\n\n return $account;\n }\n\n $this->logger->info('Resolving account from prospect data');\n $accountData = array_filter(\n $prospects,\n static fn (array $prospectData): bool => $prospectData['type'] === 'account'\n );\n\n if (! empty($accountData)) {\n $this->logger->info('Found account data in prospects');\n $accountData = reset($accountData);\n\n $account = $team->crm->accounts()->where('crm_provider_id', $accountData['id'])->first();\n\n if (! $account instanceof Account) {\n $this->logger->info('Account not found in database, syncing from CRM');\n $account = $crmService->syncAccount($accountData['id']);\n }\n }\n\n $this->logger->info('Resolved account', ['account' => $account->getId()]);\n\n return $account;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.43384308,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.4424867,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.45345744,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.46210107,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.47074467,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.4817154,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.49268618,"top":0.074221864,"width":0.024268618,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5192819,"top":0.074221864,"width":0.008643617,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.53025264,"top":0.074221864,"width":0.029587766,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.75897604,"top":0.074221864,"width":0.02825798,"height":0.01915403},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"37","depth":4,"bounds":{"left":0.7287234,"top":0.09896249,"width":0.009973404,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.7406915,"top":0.09896249,"width":0.00731383,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"35","depth":4,"bounds":{"left":0.75,"top":0.09896249,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"63","depth":4,"bounds":{"left":0.76230055,"top":0.09896249,"width":0.010305851,"height":0.015163607},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7742686,"top":0.09736632,"width":0.00731383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.7815825,"top":0.09736632,"width":0.006981383,"height":0.018355945},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993\nSELECT * FROM users WHERE id = 25061;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 994;\nSELECT * FROM crm_profiles WHERE user_id = 25061;\n\nselect * from crm_configurations where id = 834;\nSELECT * FROM teams WHERE id = 882;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;\n\nSELECT * FROM contacts where crm_configuration_id = 834;\nSELECT * FROM opportunities WHERE team_id = 933\n# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');\nAND id IN (8482561,18352941,19042734,19232139,19445140,19472541);\nSELECT * FROM opportunity_contacts\nWHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; #\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nselect crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id\nwhere crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')\n# and l.converted_at IS NOT NULL\n;\n\n# ********************************************************************\nSELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')\nand opportunity_id IS NULL\norder by id desc;\n\nSELECT * FROM teams WHERE id = 604; # 598\nSELECT * FROM activities WHERE id = 74410828; # chelseaw@allvoices.co\nSELECT * FROM accounts WHERE id = 20068382;\nSELECT * FROM accounts WHERE id = 35186038;\n\nSELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 559 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;\nselect * from sidekick_settings where team_id = 781;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 711;\nSELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL\nand is_internal = 0 and status = 'completed'\norder by id desc;\n\nSELECT * FROM crm_layout_entities\nWHERE crm_layout_id IN (2352, 2353);\n;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;\nSELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;\nselect * from contacts\nwhere crm_configuration_id = 530\nand crm_provider_id = 872252;\n\nselect * from activities where crm_configuration_id = 530\nand user_id = 14343 and type like '%softphone%'\nand created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);\n\n\nSELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t\nJOIN crm_configurations c ON t.id = c.team_id\nWHERE t.status = 'active';\n\nSELECT * FROM teams where id = 1091;\nSELECT * FROM crm_configurations where team_id = 1091;\nSELECT * FROM activity_providers where team_id = 1091;\nSELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT * FROM teams WHERE name LIKE '%Leadventure%';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1091 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812\nSELECT * FROM teams where id = 862;\nSELECT * FROM crm_configurations where team_id = 862;\nSELECT * FROM activity_providers where team_id = 862;\nSELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT t.id, crm.id, crm.provider, ap.* FROM teams t\njoin crm_configurations crm on t.id = crm.team_id\njoin activity_providers ap on t.id = ap.team_id\nwhere t.status = 'active' and ap.is_enabled = 1\nand crm.provider = 'hubspot'\nand ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',\n 'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');\n\nSELECT * FROM teams where id = 1068;\nSELECT * FROM crm_configurations where team_id = 1068;\nSELECT * FROM activity_providers where team_id = 1068;\n\nSELECT * FROM activities a\nwhere crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')\nand a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'\n )\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by a.id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1068 and sa.provider = 'hubspot';\n\n# ********************************************************************\n# ********************************************************************\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262\nSELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\nselect * from crm_layouts where crm_configuration_id = 834;\nselect * from crm_layout_entities where crm_layout_id = 2780;\nselect * from crm_fields where id IN (321153,321192,321193,321194);\n\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1057 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8\n\nSELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20\n\nSELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10\n\nSELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #\n\nSELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;\nselect * from users where team_id = 51; # 7783\nSELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130\nselect * from activity_searches where user_id = 7783;\nselect * from activity_search_filters where activity_search_id IN (32291, 32292);\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th\n# ********************************************************************\nSELECT * FROM crm_configurations where provider = 'hubspot';\nSELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133\nSELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null\n# ********************************************************************\n\nselect * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';\nselect\n cp.*\n# DISTINCT t.id\n# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields\nFROM crm_profiles cp\nJOIN crm_configurations crm on crm.id = cp.crm_configuration_id\nJOIN users u on u.id = cp.user_id\nJOIN teams t ON t.id = crm.team_id\nWHERE crm.provider = 'salesforce' and t.status = 'active'\n and cp.archived_at IS NULL and u.deleted_at IS NULL\n and t.id NOT IN (1093)\n and t.id = 2\n and cp.contact_fields IS NULL;\n# and c.crm_provider_id = '003Uu00000ojD4NIAU';\n\nSELECT * FROM users WHERE id = 26484;\nSELECT * FROM crm_profiles WHERE user_id = 26484;\nSELECT * FROM social_accounts WHERE sociable_id = 26484;\nSELECT * FROM crm_configurations where provider = 'salesforce';\nselect * from users where id IN (10022, 10403);\nselect * from users where team_id IN (526);\nselect * from teams where id IN (526, 532);\nselect * from crm_configurations where id IN (500, 516);\nselect * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);\nselect * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 526 and sa.provider = 'salesforce';\nselect * from team_settings where team_id IN (526, 532);\n\nselect * from users where id IN (22824);\nselect * from crm_profiles where crm_configuration_id IN (1026);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1093 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1099;\nselect * from users where id = 29643\n\nselect * from activity_processing_states;\n\nSELECT * FROM teams where name LIKE '%Fare%'; # 233\nSELECT * FROM opportunities where crm_configuration_id = 215\n# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'\n;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1088 and sa.provider = 'hubspot';\n\nSELECT * FROM teams order by updated_at DESC\nSELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account\n\nselect * from crm_configurations where provider = 'pipedrive';\n\nselect * from teams where id = 957;\nselect * from crm_configurations where id = 957;\n\nSELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743\nSELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;\n\nselect * from users where team_id = 1; # 26726 - Gabriela Dureva\nSELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific\nselect * from activities where user_id = 26726 order by id desc;\nselect * from contacts where crm_configuration_id = 1\nand email IN ('charlotte.ward@prolific.com', 'frankie.bryant@prolific.com'); # 2094416, 2093620\nSELECT * FROM contacts WHERE id = 6284931;\n\nSELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id\nWHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;\n\nselect * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);\nselect * from crm_configurations where id = 1;\n\n43801692-1aeb-32ce-acba-5b80a479701a\n44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b\n405975c0-b3d0-7aaa-821f-09d59cae6dd1\n4caf848d-4bed-2299-b248-7788d41f9fca\n49bedc3f-f196-eef3-89c3-dea6a3b4aa63\n43420989-a09d-b8f8-9806-c8bbf7a02aac\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nSELECT * FROM activities WHERE id = 75461988;\n\nSELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;\n\nselect * from contacts where id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nselect * from users where id = 21047;\nSELECT * FROM crm_configurations WHERE id = 892;\nSELECT * FROM teams WHERE id = 942;\nselect * from opportunities where team_id = 942 order by updated_at desc;\nselect * from contacts where team_id = 942 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 942 and sa.provider = 'hubspot';\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430\nSELECT * FROM crm_configurations WHERE id = 1;\nSELECT * FROM teams WHERE crm_id = 1;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1\nSELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430\n\nselect * from teams where id = 852;\nselect * from groups where id = 2286;\nselect * from sidekick_settings where team_id = 852;\nselect * from default_activity_types where team_id = 852;\n\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1 AND u.deleted_at IS NULL\nAND u.crm_required = 1\nAND u.team_id = 1\nORDER BY u.team_id;\n\nSELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (\n18481\n );\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1\n AND u.deleted_at IS NULL\n AND u.crm_required = 1\n# AND u.team_id = 1\n AND p.id IS NULL -- Move this condition to WHERE clause\nORDER BY u.team_id;\n\nSELECT * FROM opportunities WHERE id = 20002609;\nselect * from teams where id = 1122; # Velatir, 29953 - christian@velatir.com\nselect * from crm_configurations where id = 1060;\nselect * from crm_layouts where crm_configuration_id = 1060;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1122 and sa.provider = 'hubspot';\nselect * from opportunities where team_id = 1122 order by updated_at desc;\n\nselect * from crm_field_data where object_type = 'contact';\n\nSELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 248 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS\nSELECT * FROM users where id = 24115;\nSELECT * FROM accounts where id = 4002896;\nSELECT * FROM teams WHERE name LIKE '%adswerve%';\nSELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN (\"0069N000003GIQ9QAO\",\"0061r000019yGP9AAM\",\"0066900001S2KWlAAN\",\"0066900001TDpj2AAD\",\"0066900001b8uEwAAI\",\"0069N000001rQi0QAE\",\"006QF00000KD40mYAD\",\"006QF00000LzpRJYAZ\",\"0069N000002uomtQAA\",\"0069N000002xlMLQAY\",\"0066900001NV6ubAAD\",\"0061r00001HJp45AAD\",\"006QF00000uTlUoYAK\",\"006QF00000v0bZqYAI\");\nSELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203\n\nSELECT u.id, u.email, ac.name, a.* FROM activities a\nJOIN users u ON a.user_id = u.id\nJOIN accounts ac ON a.account_id = ac.id\nWHERE\nuuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or\nuuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or\nuuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;\n\nselect * from users where id = 5825;\nSELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;\n\nselect * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;\n19594, 862\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 862 and sa.provider = 'salesforce';\n\nselect * from automated_reports where id = 36;\nselect ar.frequency, r.*, ar.* from automated_report_results r\njoin automated_reports ar on r.report_id = ar.id\nwhere ar.frequency != 'one_off';\n\nselect s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;\nselect * from nudges n where n.activity_search_id\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;\n\nselect * from users where team_id = 1 and name like '%Lukas%'; # 7160\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\nSELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,\nselect * from opportunities where team_id = 1126;\nSELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,\nselect * from opportunities where team_id = 1125;\nselect * from contacts c\nwhere c.team_id = 882;\n\nSELECT * FROM activities WHERE id = 76822967;\nSELECT * FROM crm_profiles WHERE user_id = 15440;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 555;\nSELECT * FROM crm_configurations WHERE id = 555;\nSELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 581 and sa.provider = 'salesforce';\n\nSELECT * FROM automated_report_results order by id desc;\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556;\n\nselect * from automated_reports;\nwhere id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , [\"pdf\",\"podcast\"]\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\nselect * from automated_report_results order by id desc;\nSELECT * FROM automated_report_results WHERE id = 1919;\n\nselect * from automated_report_results WHERE report_id = 54;\n\nselect * from opportunities where id = 7594349;\n\nSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - jiminnyintegration@lesmills.com\nselect * from playbooks where team_id = 711; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 5515;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 692;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 711 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles cp JOIN users u on u.id = cp.user_id WHERE u.team_id = 711;\n\nselect * from leads;\n\nselect * from calendars;\n\nSELECT\n t.id AS team_id,\n t.name,\n LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1)) AS calendar_domain\nFROM teams t\nJOIN users u ON u.team_id = t.id\nJOIN calendars c ON c.user_id = u.id AND c.status = 'active' AND c.calendar_provider_id LIKE '%@%'\nLEFT JOIN team_domains td\n ON td.team_id = t.id\n AND td.deleted_at IS NULL\n AND td.domain = LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1))\nGROUP BY t.id, t.name, calendar_domain\nORDER BY t.name, calendar_domain;\n\nselect * from users u join calendars c on c.user_id = u.id\nwhere u.team_id = 882;\n\n\nselect * from activities where id = 74049485; # team 563 crm 537\nselect * from activities where id = 73272382; # team 563 crm 537\nselect * from activities where id = 64400389; # team 563 crm 537\nselect * from activities where id = 58081273; # team 563 crm 537\nselect * from activities where id = 54520297; # team 563 crm 537\nselect * from participants where activity_id = 58081273;\n\nselect * from activities where crm_configuration_id = 537 and provider = 'aircall'\nand account_id = 19003658 order by updated_at desc;\n\nselect * from contacts where crm_configuration_id = 537 and id = 35957759;\nselect * from accounts where crm_configuration_id = 537 and id = 19003658;\n\nselect * from automated_report_results where id = 1976;\nselect * from automated_reports where id = 583;\nselect * from activity_searches where id = 87714;\nselect * from activity_search_filters where activity_search_id = 87714;\n\nSELECT * FROM activities WHERE uuid_to_bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid\nor uuid_to_bin('47842446-af51-4bcb-854f-cc6560290101') = uuid;","depth":4,"on_screen":true,"value":"SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993\nSELECT * FROM users WHERE id = 25061;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 994;\nSELECT * FROM crm_profiles WHERE user_id = 25061;\n\nselect * from crm_configurations where id = 834;\nSELECT * FROM teams WHERE id = 882;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;\n\nSELECT * FROM contacts where crm_configuration_id = 834;\nSELECT * FROM opportunities WHERE team_id = 933\n# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');\nAND id IN (8482561,18352941,19042734,19232139,19445140,19472541);\nSELECT * FROM opportunity_contacts\nWHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; #\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nselect crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id\nwhere crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')\n# and l.converted_at IS NOT NULL\n;\n\n# ********************************************************************\nSELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')\nand opportunity_id IS NULL\norder by id desc;\n\nSELECT * FROM teams WHERE id = 604; # 598\nSELECT * FROM activities WHERE id = 74410828; # chelseaw@allvoices.co\nSELECT * FROM accounts WHERE id = 20068382;\nSELECT * FROM accounts WHERE id = 35186038;\n\nSELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 559 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;\nselect * from sidekick_settings where team_id = 781;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 711;\nSELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL\nand is_internal = 0 and status = 'completed'\norder by id desc;\n\nSELECT * FROM crm_layout_entities\nWHERE crm_layout_id IN (2352, 2353);\n;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;\nSELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;\nselect * from contacts\nwhere crm_configuration_id = 530\nand crm_provider_id = 872252;\n\nselect * from activities where crm_configuration_id = 530\nand user_id = 14343 and type like '%softphone%'\nand created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);\n\n\nSELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t\nJOIN crm_configurations c ON t.id = c.team_id\nWHERE t.status = 'active';\n\nSELECT * FROM teams where id = 1091;\nSELECT * FROM crm_configurations where team_id = 1091;\nSELECT * FROM activity_providers where team_id = 1091;\nSELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT * FROM teams WHERE name LIKE '%Leadventure%';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1091 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812\nSELECT * FROM teams where id = 862;\nSELECT * FROM crm_configurations where team_id = 862;\nSELECT * FROM activity_providers where team_id = 862;\nSELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT t.id, crm.id, crm.provider, ap.* FROM teams t\njoin crm_configurations crm on t.id = crm.team_id\njoin activity_providers ap on t.id = ap.team_id\nwhere t.status = 'active' and ap.is_enabled = 1\nand crm.provider = 'hubspot'\nand ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',\n 'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');\n\nSELECT * FROM teams where id = 1068;\nSELECT * FROM crm_configurations where team_id = 1068;\nSELECT * FROM activity_providers where team_id = 1068;\n\nSELECT * FROM activities a\nwhere crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')\nand a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'\n )\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by a.id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1068 and sa.provider = 'hubspot';\n\n# ********************************************************************\n# ********************************************************************\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262\nSELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\nselect * from crm_layouts where crm_configuration_id = 834;\nselect * from crm_layout_entities where crm_layout_id = 2780;\nselect * from crm_fields where id IN (321153,321192,321193,321194);\n\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1057 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8\n\nSELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20\n\nSELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10\n\nSELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #\n\nSELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;\nselect * from users where team_id = 51; # 7783\nSELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130\nselect * from activity_searches where user_id = 7783;\nselect * from activity_search_filters where activity_search_id IN (32291, 32292);\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th\n# ********************************************************************\nSELECT * FROM crm_configurations where provider = 'hubspot';\nSELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133\nSELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null\n# ********************************************************************\n\nselect * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';\nselect\n cp.*\n# DISTINCT t.id\n# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields\nFROM crm_profiles cp\nJOIN crm_configurations crm on crm.id = cp.crm_configuration_id\nJOIN users u on u.id = cp.user_id\nJOIN teams t ON t.id = crm.team_id\nWHERE crm.provider = 'salesforce' and t.status = 'active'\n and cp.archived_at IS NULL and u.deleted_at IS NULL\n and t.id NOT IN (1093)\n and t.id = 2\n and cp.contact_fields IS NULL;\n# and c.crm_provider_id = '003Uu00000ojD4NIAU';\n\nSELECT * FROM users WHERE id = 26484;\nSELECT * FROM crm_profiles WHERE user_id = 26484;\nSELECT * FROM social_accounts WHERE sociable_id = 26484;\nSELECT * FROM crm_configurations where provider = 'salesforce';\nselect * from users where id IN (10022, 10403);\nselect * from users where team_id IN (526);\nselect * from teams where id IN (526, 532);\nselect * from crm_configurations where id IN (500, 516);\nselect * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);\nselect * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 526 and sa.provider = 'salesforce';\nselect * from team_settings where team_id IN (526, 532);\n\nselect * from users where id IN (22824);\nselect * from crm_profiles where crm_configuration_id IN (1026);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1093 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1099;\nselect * from users where id = 29643\n\nselect * from activity_processing_states;\n\nSELECT * FROM teams where name LIKE '%Fare%'; # 233\nSELECT * FROM opportunities where crm_configuration_id = 215\n# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'\n;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1088 and sa.provider = 'hubspot';\n\nSELECT * FROM teams order by updated_at DESC\nSELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account\n\nselect * from crm_configurations where provider = 'pipedrive';\n\nselect * from teams where id = 957;\nselect * from crm_configurations where id = 957;\n\nSELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743\nSELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;\n\nselect * from users where team_id = 1; # 26726 - Gabriela Dureva\nSELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific\nselect * from activities where user_id = 26726 order by id desc;\nselect * from contacts where crm_configuration_id = 1\nand email IN ('charlotte.ward@prolific.com', 'frankie.bryant@prolific.com'); # 2094416, 2093620\nSELECT * FROM contacts WHERE id = 6284931;\n\nSELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id\nWHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;\n\nselect * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);\nselect * from crm_configurations where id = 1;\n\n43801692-1aeb-32ce-acba-5b80a479701a\n44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b\n405975c0-b3d0-7aaa-821f-09d59cae6dd1\n4caf848d-4bed-2299-b248-7788d41f9fca\n49bedc3f-f196-eef3-89c3-dea6a3b4aa63\n43420989-a09d-b8f8-9806-c8bbf7a02aac\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nSELECT * FROM activities WHERE id = 75461988;\n\nSELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;\n\nselect * from contacts where id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nselect * from users where id = 21047;\nSELECT * FROM crm_configurations WHERE id = 892;\nSELECT * FROM teams WHERE id = 942;\nselect * from opportunities where team_id = 942 order by updated_at desc;\nselect * from contacts where team_id = 942 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 942 and sa.provider = 'hubspot';\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430\nSELECT * FROM crm_configurations WHERE id = 1;\nSELECT * FROM teams WHERE crm_id = 1;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1\nSELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430\n\nselect * from teams where id = 852;\nselect * from groups where id = 2286;\nselect * from sidekick_settings where team_id = 852;\nselect * from default_activity_types where team_id = 852;\n\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1 AND u.deleted_at IS NULL\nAND u.crm_required = 1\nAND u.team_id = 1\nORDER BY u.team_id;\n\nSELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (\n18481\n );\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1\n AND u.deleted_at IS NULL\n AND u.crm_required = 1\n# AND u.team_id = 1\n AND p.id IS NULL -- Move this condition to WHERE clause\nORDER BY u.team_id;\n\nSELECT * FROM opportunities WHERE id = 20002609;\nselect * from teams where id = 1122; # Velatir, 29953 - christian@velatir.com\nselect * from crm_configurations where id = 1060;\nselect * from crm_layouts where crm_configuration_id = 1060;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1122 and sa.provider = 'hubspot';\nselect * from opportunities where team_id = 1122 order by updated_at desc;\n\nselect * from crm_field_data where object_type = 'contact';\n\nSELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 248 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS\nSELECT * FROM users where id = 24115;\nSELECT * FROM accounts where id = 4002896;\nSELECT * FROM teams WHERE name LIKE '%adswerve%';\nSELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN (\"0069N000003GIQ9QAO\",\"0061r000019yGP9AAM\",\"0066900001S2KWlAAN\",\"0066900001TDpj2AAD\",\"0066900001b8uEwAAI\",\"0069N000001rQi0QAE\",\"006QF00000KD40mYAD\",\"006QF00000LzpRJYAZ\",\"0069N000002uomtQAA\",\"0069N000002xlMLQAY\",\"0066900001NV6ubAAD\",\"0061r00001HJp45AAD\",\"006QF00000uTlUoYAK\",\"006QF00000v0bZqYAI\");\nSELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203\n\nSELECT u.id, u.email, ac.name, a.* FROM activities a\nJOIN users u ON a.user_id = u.id\nJOIN accounts ac ON a.account_id = ac.id\nWHERE\nuuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or\nuuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or\nuuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;\n\nselect * from users where id = 5825;\nSELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;\n\nselect * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;\n19594, 862\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 862 and sa.provider = 'salesforce';\n\nselect * from automated_reports where id = 36;\nselect ar.frequency, r.*, ar.* from automated_report_results r\njoin automated_reports ar on r.report_id = ar.id\nwhere ar.frequency != 'one_off';\n\nselect s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;\nselect * from nudges n where n.activity_search_id\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;\n\nselect * from users where team_id = 1 and name like '%Lukas%'; # 7160\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\nSELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,\nselect * from opportunities where team_id = 1126;\nSELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,\nselect * from opportunities where team_id = 1125;\nselect * from contacts c\nwhere c.team_id = 882;\n\nSELECT * FROM activities WHERE id = 76822967;\nSELECT * FROM crm_profiles WHERE user_id = 15440;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 555;\nSELECT * FROM crm_configurations WHERE id = 555;\nSELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 581 and sa.provider = 'salesforce';\n\nSELECT * FROM automated_report_results order by id desc;\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556;\n\nselect * from automated_reports;\nwhere id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , [\"pdf\",\"podcast\"]\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\nselect * from automated_report_results order by id desc;\nSELECT * FROM automated_report_results WHERE id = 1919;\n\nselect * from automated_report_results WHERE report_id = 54;\n\nselect * from opportunities where id = 7594349;\n\nSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - jiminnyintegration@lesmills.com\nselect * from playbooks where team_id = 711; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 5515;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 692;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 711 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles cp JOIN users u on u.id = cp.user_id WHERE u.team_id = 711;\n\nselect * from leads;\n\nselect * from calendars;\n\nSELECT\n t.id AS team_id,\n t.name,\n LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1)) AS calendar_domain\nFROM teams t\nJOIN users u ON u.team_id = t.id\nJOIN calendars c ON c.user_id = u.id AND c.status = 'active' AND c.calendar_provider_id LIKE '%@%'\nLEFT JOIN team_domains td\n ON td.team_id = t.id\n AND td.deleted_at IS NULL\n AND td.domain = LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1))\nGROUP BY t.id, t.name, calendar_domain\nORDER BY t.name, calendar_domain;\n\nselect * from users u join calendars c on c.user_id = u.id\nwhere u.team_id = 882;\n\n\nselect * from activities where id = 74049485; # team 563 crm 537\nselect * from activities where id = 73272382; # team 563 crm 537\nselect * from activities where id = 64400389; # team 563 crm 537\nselect * from activities where id = 58081273; # team 563 crm 537\nselect * from activities where id = 54520297; # team 563 crm 537\nselect * from participants where activity_id = 58081273;\n\nselect * from activities where crm_configuration_id = 537 and provider = 'aircall'\nand account_id = 19003658 order by updated_at desc;\n\nselect * from contacts where crm_configuration_id = 537 and id = 35957759;\nselect * from accounts where crm_configuration_id = 537 and id = 19003658;\n\nselect * from automated_report_results where id = 1976;\nselect * from automated_reports where id = 583;\nselect * from activity_searches where id = 87714;\nselect * from activity_search_filters where activity_search_id = 87714;\n\nSELECT * FROM activities WHERE uuid_to_bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid\nor uuid_to_bin('47842446-af51-4bcb-854f-cc6560290101') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"top":0.047885075,"width":0.024268618,"height":0.024740623},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"app ~/jiminny/app","depth":6,"on_screen":false,"role_description":"text"}]...
|
6854735237441457686
|
-8388112813313649516
|
visual_change
|
accessibility
|
NULL
|
SonarQube for IDE suggestions
Detect more security SonarQube for IDE suggestions
Detect more security issues in your PHP files
text/html
text/html
text/html
Try SonarQube Cloud for free
Download SonarQube Server
Learn more
Don't ask again
More
Workspace associated with branch 'master' has been restored
text/html
text/html
text/html
Rollback
Configure…
More
Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
1
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Http\Controllers\API;
use Carbon\Carbon;
use ChaseConey\LaravelDatadogHelper\Datadog;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Rule;
use Illuminate\Validation\Rules\In;
use Illuminate\Validation\ValidationException;
use InvalidArgumentException;
use Jiminny\Component\ActivityAnalytics;
use Jiminny\Component\ActivitySearch;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\PlaybackPage\Comments\Services\ActivityCommentService;
use Jiminny\Component\Queue\Constants;
use Jiminny\Contracts\Nudge\NudgeFactoryInterface;
use Jiminny\Contracts\Playlist\PlaylistTrackFactoryInterface;
use Jiminny\Contracts\Repositories\PlaylistActivityRepository;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Enums\TeamSetting;
use Jiminny\Events\Activities\AiAutomation\ActivityProspectAdded;
use Jiminny\Events\Activities\Coaching\Coached;
use Jiminny\Contracts\Services\Crm\SupportsObjectTypeParseInterface;
use Jiminny\Exceptions\LogicException;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Http\Controllers\API\BaseController as Controller;
use Jiminny\Http\Controllers\CommentContextInterface;
use Jiminny\Http\Responses\Api\AbstractResponse;
use Jiminny\Http\Responses\Api\Response;
use Jiminny\Http\Serializers\JsonSerializer;
use Jiminny\Http\Transformers\ActivityCommentTransformer;
use Jiminny\Http\Transformers\ActivityTopicTriggerTransformer;
use Jiminny\Http\Transformers\ActivityTransformer;
use Jiminny\Http\Transformers\AvailabilityNotificationTransformer;
use Jiminny\Http\Transformers\CoachingFeedbackTransformer;
use Jiminny\Http\Transformers\CoachingSectionsTransformer;
use Jiminny\Http\Transformers\SearchTransformer;
use Jiminny\Http\Transformers\StatsTransformer;
use Jiminny\Jobs\Crm\SaveActivity;
use Jiminny\Jobs\Crm\UpdateStage;
use Jiminny\Jobs\Telephony\StartRecording;
use Jiminny\Jobs\Telephony\StopRecording;
use Jiminny\Jobs\Telephony\ToggleRecording;
use Jiminny\Models\Account;
use Jiminny\Models\Activity;
use Jiminny\Models\Activity\CoachRequest;
use Jiminny\Models\Activity\Comment;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\Activity\Share;
use Jiminny\Models\CoachingFeedback;
use Jiminny\Models\CoachingSection;
use Jiminny\Models\CoachingSectionCriterion;
use Jiminny\Models\CoachingSectionFeedback;
use Jiminny\Models\Contact;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Crm\FieldData;
use Jiminny\Models\Crm\Layout;
use Jiminny\Models\Crm\LayoutEntity;
use Jiminny\Models\Feature\FeatureEnum;
use Jiminny\Models\LanguageDialect;
use Jiminny\Models\Lead;
use Jiminny\Models\Nudge;
use Jiminny\Models\PlaybookCategory;
use Jiminny\Models\Playlist;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\Track;
use Jiminny\Models\User;
use Jiminny\Repositories\CoachingFeedbackRepository;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Repositories\TeamRepository;
use Jiminny\Rules\CrmReference;
use Jiminny\Rules\MultidimensionalArrayMaxCharRule;
use Jiminny\Services\ActivityService;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Services\PlaybackService;
use Jiminny\Services\UserService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use Psr\Log\LoggerInterface;
use Ramsey\Uuid\Uuid;
use Sentry;
use Symfony\Component\HttpFoundation;
final class ActivityController extends Controller implements CommentContextInterface
{
// Number of minutes to look back on activities. i.e. a timeout on activity duration.
private const LOOK_BACK = 180;
public function __construct(
private ProviderRegistry $providerRegistry,
private ActivityService $activityService,
Response $response,
private UserService $userService,
private ActivitySearch\Service\ActivitySearch $activitySearch,
private NudgeFactoryInterface $nudgeFactory,
private ActivityCommentService $activityCommentService,
private LoggerInterface $logger,
private readonly CoachingFeedbackRepository $coachingFeedbackRepository,
private readonly TeamRepository $teamRepository,
) {
parent::__construct($response);
}
public static function getCommentImplementation(): string
{
return Comment::class;
}
public function delete()
{
$this->request->validate([
'*' => 'uuid:activities',
]);
$deletedIds = [];
foreach ($this->request->all() as $activityId) {
$activity = Activity::idOrUuId($activityId);
try {
if ($this->authorize('delete', $activity)) {
$activity->delete();
$deletedIds[] = $activityId;
\Log::info('Soft deleted activity ' . $activity->id_string . ' by user ' . $this->getUser()->id);
}
} catch (AuthorizationException $authorizationException) {
// They didn't have permission.
}
}
return $this->response->withArray($deletedIds);
}
public function update(Request $request, Activity $activity)
{
$this->authorize('updateMetadata', $activity);
$request->validate([
'title' => 'string|max:250',
'category_id' => 'uuid:playbook_categories',
'language' => [
new In(
LanguageDialect::query()
->with('language')
->cursor()
->map(static function (LanguageDialect $languageDialect): string {
return $languageDialect->getLanguageLocale();
})
->all()
),
],
]);
if ($request->has('title')) {
$activity->title = $request->input('title');
}
if ($request->has('category_id')) {
$category = PlaybookCategory::uuid($request->input('category_id'));
if ($category->playbook->team_id !== $request->user()->team_id) {
return $this->response->errorNotFound('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
if ($request->has('language')) {
if (! $activity->isInProgress()) {
return $this->response->withError(
'Activity language can only be set while the meeting is in progress.',
400
);
}
$activity->setLanguageCode($request->input('language'));
}
$activity->save();
return $this->response->withOk();
}
// XXX: This should be merged with the update method.
/**
* @param Activity $activity
*
* @throws AuthorizationException
* @throws SocialAccountTokenInvalidException
*
* @return mixed
*/
public function summarize(Activity $activity): mixed
{
$this->logger->info('[Log Activity] Summarizing activity ', [
'activityId' => $activity->getUuid(),
'payload' => $this->request->all(),
]);
$this->authorize('update', $activity);
$this->logger->info('[Log Activity] Validating summary');
// Validate the payload.
$this->validateSummary($activity);
// All objects must belong to this team.
/** @var User $user */
$user = $this->request->user();
$team = $user->getTeam();
$crmService = $this->providerRegistry->get($team->crm->provider);
try {
$crmUser = $user;
if ($user->isCrmRequired() === false) {
$crmUser = $team->owner;
}
$crmService->setUser($crmUser);
} catch (SocialAccountTokenInvalidException $accountTokenInvalidException) {
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($accountTokenInvalidException->getMessage());
}
$rawEntities = $this->request->input('entities');
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid(
$this->request->input('layout_id')
);
// Delay execution of CRM jobs to avoid locking issues.
$jobDelay = 0;
// If we have arrived from a notification, mark it as read.
$notificationId = $this->request->input('nId');
if ($notificationId) {
$notification = $user->unreadNotifications->where('id', $notificationId)->first();
if ($notification) {
$notification->markAsRead();
}
}
$title = $this->request->input('title');
$prospects = $this->request->input('prospects');
$opportunityId = $this->request->input('opportunity_id');
$stageId = $this->request->input('stage_id');
$categoryId = $this->request->input('category_id');
$summary = $this->request->input('summary');
$crmProviderId = $this->request->input('crm_id');
$isInternal = $this->request->input('is_internal') ?? false;
$lead = null;
$category = null;
$account = null;
$contact = null;
$opportunity = null;
$stage = null;
$callStage = null;
foreach ($prospects as $prospectData) {
$objectId = $prospectData['id'];
if ($objectId === null) {
continue;
}
$objectType = $prospectData['type'];
$this->logger->info('debug', ['prospect_data' => $prospectData]);
try {
if ($objectType === null) {
$this->logger->info('no object type');
if ($crmService instanceof SupportsObjectTypeParseInterface) {
$objectType = $crmService->parseObjectType($objectId);
}
}
switch ($objectType) {
case 'lead':
$this->logger->info('Processing lead');
/** @var Lead|null $lead */
$lead = $team->crm->leads()->where('crm_provider_id', $objectId)->first();
// Lead does not exist locally, import it.
if ($lead === null) {
$this->logger->info('Lead does not exist locally');
/** @var Lead $lead */
$lead = $crmService->syncLead($objectId);
}
$this->logger->info('Lead found', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
if ($stageId === null) {
$this->logger->info('Stage ID is null');
// If it was not provided, just assume it is the current stage.
$callStage = $lead->stage;
break;
}
$this->logger->info('Looking for stage');
// Determine if they have changed the stage.
/** @var Stage $stage */
$stage = $team->crm->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_LEAD)
->firstOrFail();
$this->logger->info('Stage found', ['stageId' => $stage->id, 'lead_stage' => $lead->stage_id]);
if ($lead->stage_id && $lead->stage_id !== $stage->id) {
$this->logger->info('Stage has changed');
// Storage current stage on activity.
$callStage = $lead->stage;
// The stage has changed, update in remote CRM.
dispatch(new UpdateStage($activity, $lead, $callStage, $stage));
$this->logger->info(
sprintf(
'[%s] User changing lead stage from %s to %s',
$crmService->getDisplayName(),
$callStage->getName(),
$stage->getName()
),
[
'user' => $user->getUuid(),
'lead' => $lead->getUuid(),
]
);
} else {
$this->logger->info('Stage has not changed');
// Stage remains as current.
$callStage = $stage;
}
break;
case 'account':
$this->logger->info('Processing account');
// If the object is not a lead, it should be an account.
$account = $team->crm->accounts()->where('crm_provider_id', $objectId)->first();
// Account does not exist locally, import it.
if ($account === null) {
$this->logger->info('Account does not exist locally');
$account = $crmService->syncAccount($objectId);
}
$this->logger->info('Account found', ['accountId' => $account->id]);
break;
case 'contact':
$this->logger->info('processing contact');
$contact = $team->crm->contacts()->where('crm_provider_id', $objectId)->first();
// Contact does not exist locally, import it.
if (! $contact instanceof Contact) {
$this->logger->info('contact does not exist locally');
$contact = $crmService->syncContact($objectId);
}
$this->logger->info('resolving account');
$account = $this->resolveAccount($team, $contact, $crmService, $prospects);
break;
}
// If they have specified an opportunity, retrieve this with stage.
if ($opportunityId) {
$this->logger->info('opportunity id is set');
$opportunity = $team->crm->opportunities()->where('crm_provider_id', $opportunityId)->first();
// Opportunity does not exist locally, import it.
if ($opportunity === null) {
$this->logger->info('opportunity does not exist locally');
$opportunity = $crmService->syncOpportunity($opportunityId);
}
if ($stageId === null) {
$this->logger->info('stage id is null');
// If it was not provided, just assume it is the current stage.
$callStage = $opportunity->stage ?? null;
} else {
$this->logger->info('looking for stage');
/** @var ?Stage $opportunityStage */
$opportunityStage = $team->crm
->stages()
->uuid($stageId, false)
->where('type', Stage::TYPE_OPPORTUNITY)
->first();
// There is a chance we still cannot import this opportunity.
if ($opportunityStage !== null && $opportunity !== null && $opportunity->stage_id !== $opportunityStage->id) {
$this->logger->info('opportunity stage has changed');
// Storage current stage on activity.
$callStage = $opportunity->stage;
dispatch(new UpdateStage($activity, $opportunity, $callStage, $opportunityStage));
$this->logger->info(
sprintf(
'[%s] User changing opportunity stage from %s to %s',
$crmService->getDisplayName(),
$callStage->name,
$opportunityStage->name
),
[
'userId' => $user->id_string,
'opportunityId' => $opportunity->id_string,
]
);
} else {
$this->logger->info('opportunity stage has not changed');
// Stage remains as current.
$callStage = $opportunityStage;
}
}
}
if ($crmProviderId) {
// Cast $crmProviderId to string otherwise it won't use database index for some records
$linkedActivity = Activity::where('crm_provider_id', (string) $crmProviderId)->first();
// Check if this activity has already been assigned to a different activity.
if ($linkedActivity && $linkedActivity->id !== $activity->id) {
throw new InvalidArgumentException(
'Sorry, the linked task has already been logged under a different call. '
. 'Please choose another linked task.'
);
}
}
} catch (InvalidArgumentException $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorWrongArgs($exception->getMessage());
} catch (Exception $exception) {
$this->logger->error('Failed to process prospect', [
'prospect_data' => $prospectData,
'reason' => $exception->getMessage(),
]);
// Return a JSON response with the response array and status code.
return $this->response->errorInternalError(
'Sorry, an error occurred. Please try again or reach out to support if the problem continues.'
);
}
}
if ($categoryId) {
$category = PlaybookCategory::uuid($categoryId);
if ($category->playbook->team_id !== $team->id) {
throw new InvalidArgumentException('Sorry, this category does not belong to your playbook.');
}
$activity->playbook_category_id = $category->id;
}
$this->logger->info('Prospect data', [
'lead_id' => $lead?->getId(),
'account_id' => $account?->getId(),
'contact_id' => $contact?->getId(),
'opportunity_id' => $opportunity?->getId(),
'stage_id' => $stage?->getId(),
]);
if ($title) {
$activity->title = $title;
}
if ($summary) {
$activity->summary = $summary;
}
if ($crmProviderId) {
$activity->crm_provider_id = $crmProviderId;
}
if ($callStage) {
$this->logger->info('Setting stage id', ['stageId' => $callStage->id]);
$activity->stage_id = $callStage->id;
}
if ($lead) {
$this->logger->info('Setting lead id', ['leadId' => $lead->id]);
$activity->lead_id = $lead->id;
// If we are changed from an account > lead, unset the account data.
$this->logger->info('Unsetting account id, opportunity id, contact id, value');
$activity->account_id = null;
$activity->opportunity_id = null;
$activity->contact_id = null;
$activity->value = null;
}
if ($account) {
$this->logger->info('Setting account id', ['accountId' => $account->id]);
$activity->account_id = $account->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('unsetting lead id');
$activity->lead_id = null;
// Unset the contact if switching different accounts. Will be set up below if still applicable.
if (! $team->hasFeature(FeatureEnum::LINK_ACTIVITY_TO_MULTIPLE_PROSPECTS) || empty($contact)) {
$this->logger->info('Unsetting contact id');
$activity->contact_id = null;
}
}
if ($opportunity) {
$this->logger->info('setting opportunity id', ['opportunityId' => $opportunity->id]);
$this->logger->info('unsetting lead id');
$activity->opportunity_id = $opportunity->id;
$activity->value = $opportunity->value;
// If we are changed from an lead > account, unset the lead data.
$activity->lead_id = null;
}
if ($contact) {
$this->logger->info('setting contact id', ['contactId' => $contact->id]);
$activity->contact_id = $contact->id;
// If we are changed from an lead > account, unset the lead data.
$this->logger->info('Unsetting lead id');
$activity->lead_id = null;
}
$activity->is_internal = $isInternal;
$activity->save();
$activity->refresh();
$this->logger->notice('Activity saved', [
'activity_id' => $activity->getId(),
'lead_id' => $activity->lead_id,
'account_id' => $activity->account_id,
'contact_id' => $activity->contact_id,
'opportunity_id' => $activity->opportunity_id,
'stage_id' => $activity->stage_id,
'crm_provider_id' => $activity->getCrmProviderId(),
]);
// Store entities as field data on the activity.
$updatedData = $this->storeEntities($crmService, $activity, $layout, $rawEntities);
if ($activity->isLoggable()) {
// Follow-up Task or Event data.
$followupData = $this->fetchFollowupEntities($crmService, $layout, $rawEntities);
$this->logger->info('CRM LOG manual log triggered', [
'activityId' => $activity->getUuid(),
'followupData' => $followupData,
'userId' => $user->getUuid(),
]);
// Store data in the CRM.
// ++add check for crm_required
$job = new SaveActivity($activity, $followupData);
if ($updatedData) {
$job->delay(Carbon::now()->addMinutes($jobDelay));
}
dispatch($job);
// Manually dispatch log for Opportunity or Prospect added
if ($activity->hasOpportunity() || $activity->hasProspect()) {
event(new ActivityProspectAdded(
activity: $activity,
eventSource: 'manually-log-crm-data'
));
}
}
return $this->response->withOk();
}
/**
* Extract any activity data to be upserted in the Lead/Opportunity/Task etc in the CRM.
*
* @param ServiceInterface $service
* @param Activity $activity
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function storeEntities(ServiceInterface $service, Activity $activity, Layout $layout, array $entities): array
{
$updatedData = [];
$existingData = $activity->data()->get();
// We need to delete any existing data to overwrite with latest values.
$activity->data()->delete();
$layoutEntities = $layout->entities()
->with('field', 'parent')
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->get();
/** @var LayoutEntity $entity */
foreach ($layoutEntities as $entity) {
// If the user has provided a value for this entity
if (array_key_exists($entity->id_string, $entities)) {
$value = $entities[$entity->id_string];
// Convert raw data into values that the CRM can consume.
if ($value) {
$value = $service->normalizeValue($entity->field->type, $value);
}
// Check the field is part of the activity-summary section.
if ($entity->parent && $entity->parent->label === 'activity-summary' && $value) {
// This is the internal database ID, not the external CRM ID.
$objectId = null;
switch ($entity->field->object_type) {
case Field::OBJECT_ACCOUNT:
$objectId = $activity->account_id;
break;
case Field::OBJECT_CONTACT:
$objectId = $activity->contact_id;
break;
case Field::OBJECT_OPPORTUNITY:
$objectId = $activity->opportunity_id;
break;
case Field::OBJECT_LEAD:
$objectId = $activity->lead_id;
break;
case Field::OBJECT_TASK:
case Field::OBJECT_EVENT:
$objectId = $activity->id;
break;
}
if ($objectId) {
/** @var FieldData $data */
$data = $activity->data()->create([
'crm_layout_entity_id' => $entity->id,
'crm_field_id' => $entity->crm_field_id,
'object_type' => $entity->field->object_type,
'object_id' => $objectId,
'value' => $value,
]);
// Never send read-only field data to the CRM.
if ($entity->read_only === false && $entity->is_visible) {
$existingValue = $existingData
->where('crm_layout_entity_id', $entity->id)
->where('crm_field_id', $entity->crm_field_id)
->where('object_type', $entity->field->object_type)
->where('object_id', $objectId)
->first();
// If the field was actually changed, we need to reflect this in the CRM too.
if ($existingValue === null || $existingValue->value !== $value) {
$updatedData[] = $data->id;
}
}
}
}
}
}
return $updatedData;
}
/**
* Extract any followup data to be dispatched in a job to create a new Task/Event in the CRM.
*
* @param ServiceInterface $crmService
* @param Layout $layout
* @param array $entities The raw entity data from user
*
* @return array
*/
private function fetchFollowupEntities(ServiceInterface $crmService, Layout $layout, array $entities): array
{
$fieldData = [];
foreach ($entities as $entityId => $value) {
// Only bother with fields that have a value.
if ($value) {
// Extract the entity from the UUID. Check the field is valid and part of the follow-up section.
$entity = $layout->entities()
->uuid($entityId, false)
->whereHas('parent', function ($query) {
$query->where('label', 'follow-up');
})
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->first();
if ($entity) {
// Convert raw data into values that the CRM can consume.
$value = $crmService->normalizeValue($entity->field->type, $value);
// Add the field and value to the payload.
$fieldData += [
$entity->field->crm_provider_id => $value,
];
}
}
}
return $fieldData;
}
/**
* @param Activity $activity
*/
private function validateSummary(Activity $activity): void
{
$team = $activity->user->team;
$crmProvider = $team->crm->provider;
$attributes = [];
$rules = [
'layout_id' => 'required|uuid:crm_layouts,crm_configuration_id,' . $team->crm_id,
'title' => 'string|max:250',
'prospects' => 'required|array',
'opportunity_id' => new CrmReference($crmProvider),
'category_id' => 'uuid:playbook_categories|required_unless:is_internal,true',
'stage_id' => 'uuid:stages,team_id,' . $team->id, // Todo: move to proper validator
'summary' => 'max:50000',
'nId' => 'exists:notifications,id',
'crm_id' => new CrmReference($crmProvider),
'entities' => 'array',
'is_internal' => 'boolean',
];
/** @var Layout $layout */
$layout = $team->crm->layouts()->uuid($this->request->input('layout_id'));
// Only validate fields, not headers etc. If not loggable, we don't care about follow-up section.
$entities = $layout->entities()
->where('read_only', 0)
->whereHas('field', function ($query) {
$query->where('is_selectable', 1);
})
->whereHas('parent', function ($query) use ($activity) {
if ($activity->isLoggable() === false) {
$query->where('label', '<>', 'follow-up');
}
});
$isInternal = $this->request->input('is_internal', false);
foreach ($entities->get() as $entity) {
$rules += $this->buildFieldValidator($entity, $isInternal);
$attributes += $this->buildFieldMessage($entity);
}
$this->request->validate($rules, [], $attributes);
}
private function buildFieldValidator(LayoutEntity $entity, bool $isInternal): array
{
return [
'entities.' . $entity->id_string => $entity->getValidator($isInternal),
];
}
/**
* @param LayoutEntity $entity
*
* @return array
*/
private function buildFieldMessage(LayoutEntity $entity): array
{
$label = $entity->label;
if ($label === null) {
$label = $entity->field->label;
}
return [
'entities.' . $entity->id_string => $label,
];
}
public function search(Request $request, ElasticActivityRepository $repository): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->debugLog(
$user,
'User extracted from request',
['user' => $user->getId(), 'tz' => $user->getTimezone()]
);
$searchCriteria = Criteria::createFromRequest($request->all(), $user->getTimezone());
$this->debugLog(
$user,
'ActivitySearch criteria built',
['searchCriteria' => $searchCriteria]
);
$filterSet = $this->activitySearch->getHomepageFilterSet($searchCriteria, $user);
$this->debugLog($user, 'FilterSet built', ['filterSet' => $filterSet]);
$this->validateSearch($request, $filterSet);
$this->debugLog($user, 'Request validated');
$searchResponse = $repository->onDemandSearch($user, $searchCriteria, $filterSet);
/** @var Collection<Activity> $activities */
$activities = $searchResponse['results'];
$this->debugLog($user, 'Activities ES response extracted');
$hideInternalMeetingsSetting = $this->teamRepository->getTeamSettingByTeamId(
$user->getTeamId(),
TeamSetting::HIDE_INTERNAL_SCHEDULED_MEETINGS->name(),
);
if ($hideInternalMeetingsSetting?->getValue() === '1') {
$activities = $activities->filter(function (Activity $activity) {
if ($activity->is_internal && empty($activity->actual_start_time)) {
return false;
}
return true;
});
}
$this->debugLog($user, 'Internal meetings (?!) filtered');
$this->response->getManager()
->parseIncludes([
'category',
'organizer.group',
'prospect',
'stage',
'opportunity',
'stats',
'scorecards',
'masterTrack',
'activeParticipants',
'notification',
])
->setSerializer(new JsonSerializer());
$transformerExcludes = $this->request->input('exclude');
if ($transformerExcludes) {
$this->response->getManager()->parseExcludes($transformerExcludes);
}
$this->debugLog($user, 'Response Manager (?!) applied');
$transformer = new ActivityTransformer();
$transformer->setConsumer($user);
$this->debugLog($user, 'Activity Transformer added');
$resource = new \League\Fractal\Resource\Collection($activities, $transformer);
$page = $searchCriteria->getPageNumber();
$this->debugLog($user, 'Search criteria page number called', ['page' => $page]);
$histogram = array_pluck(array_get($searchResponse, 'histogram.buckets', []), 'doc_count', 'key_as_string');
$this->debugLog($user, 'Histogram generated. Response is ready.', ['histogram' => $histogram]);
return $this->response->withArray([
'pagination' => [
'total' => $searchResponse['totalHits'],
'current' => $page,
'prev' => max($page - 1, 1),
'next' => $page + 1,
],
'results' => $this->response->getManager()->createData($resource)->toArray(),
'histogram' => $histogram,
]);
}
private function debugLog(User $user, string $logMessage, ?array $context = []): void
{
// Debug for Learning People Only
if ($user->getTeamId() !== 260) {
return;
}
Log::notice(
sprintf('[activity-search-controller] %s', $logMessage),
$context
);
}
/** @throws ValidationException */
private function validateSearch(Request $request, FilterDefinitionCollection $filterSet, ?string $prefix = null): void
{
$rules = [
'exclude' => 'array',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
];
if ($prefix !== null && mb_strpos($prefix, '.') !== false) {
$rules[rtrim($prefix, '.')] = sprintf(
'required|array|max:%d',
$filterSet->count()
);
}
$validationRules = $filterSet->getValidationRules($prefix)
->merge($rules)
->all();
$request->validate($validationRules);
}
public function createActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$search = $this->updateOrCreateActivitySearch($request);
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function updateActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('update', $search);
$this->updateOrCreateActivitySearch($request, $search);
return $this->response->withOk();
}
private function storeNamedSearchFilters(
Collection $request,
Search $search,
FilterDefinitionCollection $filterSet,
?string $prefix = null,
): self {
$arrayTypeProperties = $filterSet
->getPropertyTypes([
FilterDefinitionCollection::PROPERTY_TYPE_ARRAY,
])
->all();
$supportedRequestProperties = $filterSet->getSupportedRequestProperties($prefix);
foreach ($supportedRequestProperties as $requestPropertyName) {
if (! array_has($request, $requestPropertyName)) {
continue;
}
/** @var string|string[] $propertyValue */
$propertyValue = array_get($request, $requestPropertyName);
$propertyName = $prefix === null
? $requestPropertyName
: mb_substr($requestPropertyName, mb_strlen($prefix));
$isArrayType = array_has($arrayTypeProperties, $propertyName);
if (! $isArrayType) {
/** @var string $requestPropertyValue */
$search->filters()->updateOrCreate(
[
'filter' => $propertyName,
],
[
'value' => $propertyValue,
]
);
continue;
}
/** @var string[] $requestPropertyValue */
/** @var SearchFilter[]|Collection $existingFilterValues */
$existingFilterValuesKeyed = $search->filters()
->where('filter', $propertyName)
->get()
->keyBy('id');
// Iterate over values provided as request parameters
foreach ($propertyValue as $value) {
/** @var SearchFilter|null $valueFilter */
$valueFilter = $search->filters()
->where(
[
'filter' => $propertyName,
'value' => $value,
]
)
->first();
if ($valueFilter !== null) {
// Remove filter value pair from list to be deleted
$existingFilterValuesKeyed->forget($valueFilter->id);
} else {
// Add new filter/value pair
$search->filters()->updateOrCreate([
'filter' => $propertyName,
'value' => $value,
]);
}
}
// Delete filter value pairs for this filter that no longer exist in request parameters
foreach ($existingFilterValuesKeyed as $existingFilter) {
$existingFilter->delete();
}
}
/** @var Collection<int, SearchFilter> $filtersKeyed */
$filtersKeyed = $search->filters()->get()->keyBy('filter');
// wipe removed filters from this search
foreach ($filtersKeyed as $filterName => $filter) {
if (array_has($request, $prefix . $filterName)) {
continue;
}
// Remove all filter values for this filter
$search->filters()->where('filter', $filterName)->delete();
}
return $this;
}
/**
* @throws AuthorizationException
*/
public function fetchActivitySearch(
Search $search,
Request $request,
SearchTransformer $searchTransformer,
): JsonResponse {
$this->authorize('view', $search);
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withItem(
$search,
$searchTransformer
->withConsumer($user)
);
}
public function listActivitySearch(Request $request, SearchTransformer $searchTransformer): JsonResponse
{
/** @var User $user */
$user = $request->user();
$this->response
->getManager()
->setSerializer(new JsonSerializer());
return $this->response->withCollection(
$user->searches()->get(),
$searchTransformer
->withConsumer($user)
);
}
/**
* Deletes a saved search
*
* @param Request $request
* @param Search $search
*
* @throws Exception
*
* @return JsonResponse
*/
public function deleteActivitySearch(Request $request, Search $search): JsonResponse
{
$this->authorize('delete', $search);
$search->filters()->delete();
$search->delete();
return $this->response->withOk();
}
public function live(Request $request, ElasticActivityRepository $repository): JsonResponse
{
$user = $this->getUserFromRequest($request);
$this->request->validate([
'sort_direction' => 'in:asc,desc',
'limit' => 'integer|min:1|max:50',
'page' => 'integer|min:1',
]);
$activities = $repository->getLiveCoachingEligibleActivities(
user: $user,
lookBackMinutes: self::LOOK_BACK,
limit: (int) $this->request->input('limit', 25),
page: (int) $this->request->input('page', 1),
sortBy: ['actual_start_time', 'scheduled_start_time'],
sortDirection: (string) $this->request->input('sort_direction', 'asc'),
);
$this->response
->getManager()
->parseIncludes(['organizer.group', 'prospect'])
->setSerializer(new JsonSerializer());
return $this->response->withCollection($activities, new ActivityTransformer());
}
/**
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function show(Activity $activity, ActivityService $activityService): JsonResponse
{
$this->authorize('show', $activity);
$user = $activity->getUser();
$team = $user->getTeam();
// Sync the opportunity with the latest data if possible.
if ($activity->opportunity_id) {
try {
$crmService = $this->providerRegistry->get($team->crm->provider);
if (! $user->isCrmRequired()) {
$crmService->setUser($team->getOwner());
} else {
$crmService->setUser($user);
}
$crmService->syncOpportunity($activity->opportunity->crm_provider_id);
} catch (Exception $exception) {
// Move on.
}
}
$activityData = $activityService->getActivityData($this->request->user(), $activity);
return response()->json($activityData);
}
public function createRecording(Activity $activity)
{
$this->authorize('record', $activity);
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Tell Twilio to start recording this activity.
if ($activity->recording_state === Activity::RECORDING_OFF) {
$job = (new StartRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withCreated();
}
return $this->response->errorGone('Activity is already recording.');
}
public function updateRecording(Request $request, Activity $activity)
{
$this->authorize('record', $activity);
$request->validate([
'preference' => 'boolean',
'state' => [
'string',
Rule::in([
Activity::RECORDING_IN_PROGRESS,
Activity::RECORDING_PAUSED,
]),
],
]);
if ($request->has('state')) {
if ($activity->hasRecordingReasonComplianceRestricted()) {
return $this->response->errorGone('Recording this number has been disabled by your organization.');
}
// Toggle the recording state between paused and resumed.
if (! $activity->isRecordingState(Activity::RECORDING_OFF)) {
$job = (new ToggleRecording($activity, $request->input('state')))
->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Recording is not toggleable.');
}
if ($request->has('preference')) {
$activity->update([
'recording_preference' => $request->input('preference') ? 1 : 0,
]);
return $this->response->withOk();
}
return $this->response->errorWrongArgs('Something went wrong');
}
public function stopRecording(Activity $activity)
{
$this->authorize('stopRecord', $activity);
// Tell Twilio to stop recording this activity.
if ($activity->isRecordingState(Activity::RECORDING_IN_PROGRESS)) {
$job = (new StopRecording($activity))->onQueue(Constants::QUEUE_CONFERENCES);
dispatch($job);
return $this->response->withOk();
}
return $this->response->errorGone('Activity is not recording.');
}
/**
* Add activity to this user's favorites playlist
*
* @throws AuthorizationException
*/
public function favorite(Activity $activity, PlaylistActivityRepository $playlistActivityRepository): JsonResponse
{
$this->authorize('favorite', $activity);
$user = $this->getUserFromRequest($this->request);
$favorite = $activity->wasFavoritedBy($user);
$name = $activity->activity_title ?? '';
// It needs to check at least one record.
if (! $favorite) {
$favoritePlaylist = $user->favoritePlaylist();
$playlistActivity = $playlistActivityRepository->findByBaseActivityUserAndPlaylist(
$activity,
$user,
$favoritePlaylist
);
if ($playlistActivity !== null) {
$playlistActivity->update(
// Just update, don't sort.
['start_time' => 0, 'name' => mb_strimwidth($name, 0, 100)],
);
} else {
$playlistActivity = $activity->playlistActivities()->create([
'playlist_id' => $favoritePlaylist->getId(),
'user_id' => $user->getId(),
'start_time' => 0,
'name' => mb_strimwidth($name, 0, 100),
]);
// Sort it on top.
$playlistActivity->update(
[
'sort' => $playlistActivityRepository->calculateNewSortOrder(
null,
$playlistActivity,
),
],
);
}
$playlistActivityRepository->calculateNewSortOrder(null, $playlistActivity);
return new JsonResponse([], JsonResponse::HTTP_CREATED);
}
return new JsonResponse(
[
'error' => [
'code' => AbstractResponse::CODE_CONFLICT,
'http_code' => JsonResponse::HTTP_CONFLICT,
'message' => 'Resource Already Exists',
],
],
JsonResponse::HTTP_CONFLICT,
);
}
/**
* Remove activity from this user's favorites playlist
*
* @param Activity $activity
*
* @throws AuthorizationException
*
* @return mixed
*/
public function unfavorite(Activity $activity)
{
$user = $th...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
16655
|
744
|
22
|
2026-05-11T09:14:05.304182+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778490845304_m1.jpg...
|
Slack
|
Slack - Huddle Preview
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Slack - Huddle Preview
Petko Kashinski is inviting Slack - Huddle Preview
Petko Kashinski is inviting you to a huddle
Microphone
Video
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Decline
Decline
Be there soon
Be there soon
Join
Join
A huddle is happening: ....
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Slack - Huddle Preview","depth":11,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski is inviting you to a huddle","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"Microphone","depth":13,"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Video","depth":13,"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"MacBook Pro Microphone (Built-in) (System Default) (Preferred)","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"MacBook Pro Microphone (Built-in) (System Default) (Preferred)","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"MacBook Pro Speakers (Built-in) (System Default) (Preferred)","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"MacBook Pro Speakers (Built-in) (System Default) (Preferred)","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"FaceTime HD Camera","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"FaceTime HD Camera","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Decline","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Decline","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Be there soon","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Be there soon","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Join","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Join","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"A huddle is happening: .","depth":10,"on_screen":true,"role_description":"text"}]...
|
4985939525474275056
|
4487752765034143829
|
click
|
hybrid
|
NULL
|
Slack - Huddle Preview
Petko Kashinski is inviting Slack - Huddle Preview
Petko Kashinski is inviting you to a huddle
Microphone
Video
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Decline
Decline
Be there soon
Be there soon
Join
Join
A huddle is happening: .
SlackFileEditViewGoHistoryWindowHelp<DEV (docker)• жз• Support Daily - in 2h 46 mDOCKERO 81DEV (docker)882APP (-zsh)|masterJY-20818-move-AJ-reports-to-separated-datadog-metricJY-20773-fix-automated-reports-user-pilot-trackingJY-20157-AJ-report-not-send-notificationJY-20508-notify-before-AJ-report-expirationJY-20372-ai-reports-promotion-pagesJY-20352-sync-opportunities-without-a-local-owner-user-id-is-nullJY-20738-debug-AJ-tracking-UPJY-18909-automated-reports-ask-jiminnyJY-20692-fix-integration-app-[API_KEY] laysJY-20698-fix-SF-activity-types-on-new-playbookJY-20543-AJ-report-trackingJY-20384-handle-auto-sync-with-no-access-to-event-typeJY-20458-ask-Jiminny-user-definitionsJY-19666-fix-import-contacts-account-associationJY-19666-HS-import-contacts-and-accounts-batch-jobJY-20458-Ask-Jiminny-ReportsJY-20200-batch-update-CRM-objects-SalesforceJY-19666-HS-webhooks-add-contact-and-companyJY-20348-trigger-setup-DI-layout-on-team-creationJY-20326-refactor-info-message-in-commandJY-20317-fix-auto-log-delay-issue-on-all-channels-disabledJY-20312-remove-on-update-change-last-synced-at-crm-configurationsJY-20306-SF-skip-auto-sync-for-task-based-playbookJY-20192-remove-deleted-team-from-saved-search-filtersJY-20197-import-opportunity-batch-jobJY-20293-enable-status-field-for-pipedrive-dealsJY-20191-remove-commands-interactive-promptsJY-20118-change-default-sync-strategyJY-20183-add-cache-on-auto-log-delayJY-20197-add-import-opportunity-batch-job20118-hs-opportunity-make-webhook-strategy-defaultJY-20118-make-default-hs-opportunity-sync-strategy-webhook-basedJY-20196-handle-opportunity-without-noteJY-20118-improve-opportunity-importJY-20189-handle-activity-search-on-deleted-groupsJY-20160JY-20145-filter-out-converted-leads-when-matchingJY-20150-skip-push-summary-on-summary-ready-1f-autologJY-20132-fix-note-encodingJY-19792-clean-logslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20725-handle-HS-search-rate-limit) $ devroot@docker_lamp_1:/home/jiminny# ]-zsh84-zsh885100%8• Mon 11 May 12:14:051881screenpipe"O 86DEV...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
23490
|
991
|
4
|
2026-05-12T07:55:45.376010+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778572545376_m2.jpg...
|
Slack
|
Slack - Huddle Preview
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Slack - Huddle Preview
Start huddle with
Petko Kas Slack - Huddle Preview
Start huddle with
Petko Kashinski
Microphone
Video
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Cancel
Cancel
Start Huddle
Start Huddle
Steliyan Georgiev, Direct Message, 1 of 7 suggestions...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Slack - Huddle Preview","depth":11,"bounds":{"left":0.49035904,"top":1.0,"width":0.04454787,"height":-0.049481273},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Start huddle with","depth":12,"bounds":{"left":0.4737367,"top":1.0,"width":0.03956117,"height":-0.086193085},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":12,"bounds":{"left":0.51296544,"top":1.0,"width":0.03557181,"height":-0.086193085},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"Microphone","depth":13,"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Video","depth":13,"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXPopUpButton","text":"FaceTime HD Camera","depth":11,"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"FaceTime HD Camera","depth":13,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cancel","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Start Huddle","depth":11,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Start Huddle","depth":12,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev, Direct Message, 1 of 7 suggestions","depth":10,"on_screen":false,"role_description":"text"}]...
|
1157025436931014837
|
-6721981953587403209
|
click
|
hybrid
|
NULL
|
Slack - Huddle Preview
Start huddle with
Petko Kas Slack - Huddle Preview
Start huddle with
Petko Kashinski
Microphone
Video
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Cancel
Cancel
Start Huddle
Start Huddle
Steliyan Georgiev, Direct Message, 1 of 7 suggestions
FV faVsco.js°9 JY-20725-handle-HS-search-rateProjectC) AutomatedReportGenerated.onp© PlaybackController.phpPlanhatService.php xus vetur.conng.sM. WEBHOOK FILTERING IMPLEM› ib External Librariesv E° Scratches and Consolesv M Database ConsolesV AEUA console [EU]A DEAL RISKS [EU]A DI (EU]A EU (EUv Ajiminny@localhost& console liminny @localnoA Di [liminny@localhost]A HS local [liminny@localhcA SF [iiminny@localhostlA zoho dev [iiminny@localh&PROD& console PRODII& console 1 PRODIA DI PRODIservicesv natahacoV AEU& consolev &iiminny@localhost4, HS Jocal 1 s 665 msA SFV APROD- console 3$V A STAGINGconsole"Dockenreadonly class PlanhatServicepublic function track(User Suser, string Sevent, array $payload = (): voidpudld -l'name' => $user->getName@'email' => $ue Search in Jlminnv"externalld'' companyExter'action' => $'info' => $paJiminny2results for "olanh"rlannat¿ ProfileSplanhackesponse->posc unl:'Salesforce log in (planhat.i...-AllItemsSthis->logFailedFbody => Sp? FavoritesSTATUS' ?>'data' => $da.Watchtower<» Developerh Outoutf liminnv.auto. =moloveeEngineering825 - Enoineerino025 - AllIntearation Accounts14 Aug 2025 - AlL• JiminnvTAGSJun 2025 - Sales T6025 - Sales TeamO 2FAJlun 2025 - Account025 - Aesaunt Mana• CSV Import 28.01.2210 2025 - Spectre Sal(• LastPacs Imnort 111.2'025odtanterv!r25 - Client Success, UK Sales, Support, Product16 t 2025 - A1125 - ALU- Client Succecs13 Sep 2025 - Client Successlient Successen 2025 - Client Success= custom.log=laravel.logA SF (jiminny@localhost]# console [eu)412 V19 AVA console [STAGING]Tx: Autohelo8 Jiminnvo) Emolovee vU Share0 Edit4 HS_local [jiminny@localhost]A console [PROD&So jiminny038 A1 A35 V 64 ^t results where 1d = 19167ts where 10 = 5851nes where id = 87714;1tilters where activity search_1d = 877141bE uuid to bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid-4bcb-854f-cc6560290101') = uuid:ons WHERE provider = 'hubspot';_results wherGoodF MEDIAN exor:decimai.))© TIMEDIFF (expr1: datetime, expr2:datetime)Press ^, to choose the selected (or first) suagestion and insert a dot afterwards Next TircascadePlanhat Event PlaybacSearched planhat in ~/iminnylappSearched olavback *visitedivisited."olavback in ~/fiminnvlaoolsupoont Dally• In 41 om• Tue 12 May 10:55:44+0 •find planhat event playback [EMAIL]:/app-eus.olanhat.com•Last edited Wednescav. Juv 5. 2023 at 3:29:20 PMII reason Ypdfpdfpdfpdfodfndfpodcastpdfpodcast<null><null><null><null><nul]>enullsYour included daily usage quota is exhausted. Purchase extra usage to continue using premium models. Quota resets May 12, 11:00isk anything (8AL)<> Code SWE-1.61 pavloadY1 1"team_id":1, "group_ids":L9J,"report_type":"exec_summary","from_date":"2025-04-01700:00:00+00:00","to_date":"2025-081 {"team_id":1,"group_ids":[],"report_type":"product_feedback","from_date":"2025-07-01T00:00:00+00:00","to_date":"20250 {"team_id":1, "group_ids":(],"report_type":"product_feedback" "from_date":"2024-08-01T00:00:00+00:00" "to_date":"20251 <null>1 <nul1>0 1"team_id":702, "group_ids":(1944],"report_type":"coaching_profiles", "from_date":"2025-04-01700:00:00+00:00", "to_date0 {"team_id":702,"group_ids": [1944],"report_type":"exec_summary","from_date":"2025-04-01T00:00:00+00:00","to_date":"2€0 {"team_id":702, "group_ids": (1963],"report_type":"coaching_profiles" "from_date":"2025-04-01T00:00:00+00:00" "to_date0 {"team_id":702, "group_ids": (1963],"report_type":"exec_summary" "from_date":"2025-04-01T00:00:00+00:00" "to_date":"20)0 {"team_id":853, "group_ids":[2309],"report_type":"coaching_profiles", "from_date":"2025-08-01T00:00:00+00:00", "to_date0 {"team_id":853, "group_ids":[2309], "report_type": "product_feedback", "from_date" : "2025-08-01T00:00:00+00:00" , "to_date"0 1"team_id":853,"group_ids":[2309],"report_type":"product_feedback", "from_date":"2025-08-01700:00:00+00:00", "to_date'2 {"team_id":1, "group_ids": [91, 2368,2,457,8],"report_type":"product_feedback", "from_date":"2025-09-01T01:00:05+00:00".1 <null>0 {"team_id":1."group_ids":[]."report type"."exec summarv" "from_date"."2025-09-01T01:00:05+00:00" "to_date"-"2025-09-0 {"team_id":1, "request id"."318d3ce6-c70a-416a-8b1f-aebb9ef594bd" "report type"."product_feedback" "media types":["pd0 {"team id".1 "request id"."4c40a7d6-4697-4b80-83f0-27d7885e2d63" "renort tvne"."exec summary" "media tvnes".["odf"]|A&iteam id".1 "nequest idu.«11a01dh1-7358-4401-a75c-160pf£39cf7d8" "nenont tvno"."exec sum0 {"team_id":1,"request_id":"75fa7c3a-03ae-4836-b0bc-861bb42d2d25" ,"report_type":"coaching_profiles"0 {"team_id":1,"request id":"9a812aee-c2ee-4908-83c3-17478465f014" "report type":"exec_st0 {"team_id":1. "request id"-"9a812aee-c2ee-4908-83c3-17478465f014" "report type"."exec summary" "media types":["odf"."CSVv• response Y"request 1d":94c5+517-6500-4840-00f1-080{"request_id":"9e5217fc-baa3-4c46-bea1-b00{"request_id":"e5067185-66c4-45be-b084-80e<null><null>"request 1d":"3a9d0566-2475-4df2-a2fc-fac"request id".05f6a613-8aa6-445d-h009-d2e{"request_id":"c05d72b5-5d7c-47f3-a911-9d2{"request_id":"7e42dc32-0544-41bd-81e9-399{"request_id". "58625189-70ce-497e-9b64-7c9{"request_id":"4137cb47-4bf4-4976-81C4-3ba1"request_id":"dca01ab8-6065-45c2-91e0-1c2{"request_id":"da504365-0217-43f9-a590-2cd<null>{"request_id"."0d8e747f-cd94-4697-ab00-c53{"request id"."318d3ce6-c70a-416a-8b1f-aeb{"request id"."4c40a7d6-4697-4b80-83f0-27dsinpques+ id".111a01dh1-7358-4401-a75c-169Jlnonuoc+ idi.1754a7c7a-02a0-192kchAhe-941{"request id":"9a812aee-c2ee-4908-83c3-174{"request_id". "9a812aee-c2ee-4908-83c3-174W Windsurf Teams650•10JUTE.A...
|
23488
|
NULL
|
NULL
|
NULL
|
|
16654
|
745
|
23
|
2026-05-11T09:14:03.556164+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-11/1778 /Users/lukas/.screenpipe/data/data/2026-05-11/1778490843556_m2.jpg...
|
Slack
|
Slack - Huddle Preview
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Slack - Huddle Preview
Petko Kashinski is inviting Slack - Huddle Preview
Petko Kashinski is inviting you to a huddle
Microphone
Video
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Decline
Decline
Be there soon
Be there soon
Join
Join
A huddle is happening: ....
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Slack - Huddle Preview","depth":11,"bounds":{"left":0.48071808,"top":0.11971269,"width":0.04454787,"height":0.012769354},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.48071808,"top":0.11971269,"width":0.0023271276,"height":0.012769354}},{"char_start":1,"char_count":21,"bounds":{"left":0.48304522,"top":0.11971269,"width":0.042220745,"height":0.012769354}}],"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski is inviting you to a huddle","depth":12,"bounds":{"left":0.4581117,"top":0.15642458,"width":0.0930851,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.4581117,"top":0.15642458,"width":0.0033244682,"height":0.014365523}},{"char_start":1,"char_count":42,"bounds":{"left":0.46110374,"top":0.15642458,"width":0.09042553,"height":0.014365523}}],"role_description":"text"},{"role":"AXCheckBox","text":"Microphone","depth":13,"bounds":{"left":0.48304522,"top":0.5123703,"width":0.014960106,"height":0.035913806},"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Video","depth":13,"bounds":{"left":0.50199467,"top":0.5123703,"width":0.014960106,"height":0.035913806},"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"MacBook Pro Microphone (Built-in) (System Default) (Preferred)","depth":11,"bounds":{"left":0.42553192,"top":0.5802075,"width":0.047872342,"height":0.028731046},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"MacBook Pro Microphone (Built-in) (System Default) (Preferred)","depth":13,"bounds":{"left":0.43783244,"top":0.58739024,"width":0.023271276,"height":0.015961692},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.43783244,"top":0.58739024,"width":0.004654255,"height":0.014365523}},{"char_start":1,"char_count":61,"bounds":{"left":0.43783244,"top":0.58739024,"width":0.026928192,"height":0.10215483}}],"role_description":"text"},{"role":"AXPopUpButton","text":"MacBook Pro Speakers (Built-in) (System Default) (Preferred)","depth":11,"bounds":{"left":0.47606382,"top":0.5802075,"width":0.048204787,"height":0.028731046},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"MacBook Pro Speakers (Built-in) (System Default) (Preferred)","depth":13,"bounds":{"left":0.48836437,"top":0.58739024,"width":0.023603724,"height":0.015961692},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.48836437,"top":0.58739024,"width":0.004654255,"height":0.014365523}},{"char_start":1,"char_count":59,"bounds":{"left":0.48836437,"top":0.58739024,"width":0.022606382,"height":0.11971269}}],"role_description":"text"},{"role":"AXPopUpButton","text":"FaceTime HD Camera","depth":11,"bounds":{"left":0.5265958,"top":0.5802075,"width":0.048204787,"height":0.028731046},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"FaceTime HD Camera","depth":13,"bounds":{"left":0.53889626,"top":0.58739024,"width":0.021941489,"height":0.015961692},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.53889626,"top":0.58739024,"width":0.0026595744,"height":0.014365523}},{"char_start":1,"char_count":17,"bounds":{"left":0.53889626,"top":0.58739024,"width":0.021941489,"height":0.031923383}}],"role_description":"text"},{"role":"AXButton","text":"Decline","depth":11,"bounds":{"left":0.4554521,"top":0.64565045,"width":0.014960106,"height":0.035913806},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Decline","depth":12,"bounds":{"left":0.45445478,"top":0.6863527,"width":0.01662234,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.45445478,"top":0.68715084,"width":0.0039893617,"height":0.014365523}},{"char_start":1,"char_count":6,"bounds":{"left":0.45844415,"top":0.68715084,"width":0.012965426,"height":0.014365523}}],"role_description":"text"},{"role":"AXButton","text":"Be there soon","depth":11,"bounds":{"left":0.49235374,"top":0.64565045,"width":0.015292553,"height":0.035913806},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Be there soon","depth":12,"bounds":{"left":0.48470744,"top":0.6863527,"width":0.030585106,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.48470744,"top":0.68715084,"width":0.0033244682,"height":0.014365523}},{"char_start":1,"char_count":12,"bounds":{"left":0.48803192,"top":0.68715084,"width":0.027593086,"height":0.014365523}}],"role_description":"text"},{"role":"AXButton","text":"Join","depth":11,"bounds":{"left":0.52958775,"top":0.64565045,"width":0.015292553,"height":0.035913806},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Join","depth":12,"bounds":{"left":0.5325798,"top":0.6863527,"width":0.00930851,"height":0.014365523},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.5325798,"top":0.68715084,"width":0.0023271276,"height":0.014365523}},{"char_start":1,"char_count":3,"bounds":{"left":0.53457445,"top":0.68715084,"width":0.00731383,"height":0.014365523}}],"role_description":"text"},{"role":"AXStaticText","text":"A huddle is happening: .","depth":10,"bounds":{"left":0.41289893,"top":0.71907425,"width":0.023603724,"height":0.0007980846},"on_screen":true,"role_description":"text"}]...
|
4985939525474275056
|
4487752765034143829
|
visual_change
|
hybrid
|
NULL
|
Slack - Huddle Preview
Petko Kashinski is inviting Slack - Huddle Preview
Petko Kashinski is inviting you to a huddle
Microphone
Video
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Microphone (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
MacBook Pro Speakers (Built-in) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Decline
Decline
Be there soon
Be there soon
Join
Join
A huddle is happening: .
40 h"suppont Dally • In Zn 40m100% Lz• Mon 11 May 12:14:03AskJiminnyReportActivityServiceTest -+0 ..= custom.log X=laravel.logA SF (jiminny@localhost]4 HS_local (jiminny@localhost]# console [PKou.A console [EU)# console [slAGiNG)2026-05-07 14:21:15] local.INF0: [Hubspot] DEBUG Getting headers {hd Slack - Huddle PreviewEl Petko Kashinski is inviting you to a huddleActivityLateMoreSlackcalVIewJiminny...v# general# jiminny-bg# platform-tickets# product launches# random# releasessoha-otnce# support# thank-vous# the people of jimi..6- Direct messages.Petko Kashinski8 Stefka Stovanovae Vasil Vasilev.Nikolay IvanovGalva Dimitrova3 Aneliya Angelova.Stovan TaneyVesf Aneliva AngelovaL James GrahamLukas Kovalik y...::: Apps" Jira Cloud8 Toastv D OpportunitySyncStD concernsC) HubspotLastmo(C) =uosootLastMorc) =uosootLastMo(C) HubspotLastMoC) HubsootLastMo(C) HubsnotSinaleSC. HubsootSvncStr(C) HubspotWebhorv M Padinationl@ DaginationConfil(C) PadinationStateMistonWindowhelp? Petko KashinskiMessagest Add canvas( FilesWednesday. April 22ndvИмаш ли минутка за оърз хъдьл :?Lukas Kovalik 6:49 PMздрасти петко, до сега оях в срещаPetko Kashinsk' 4.50 PMНяма ппоблемOnnasиx ceLukas Kovalik 6:50 PMPetko Kashinski 12:11 PMNvvadИмаш ли 2 минутки ? (edited)Lukas Kovallk 12.12 PNзпрасти даPetko Kashinski 12:13 PMМоже ли ла зрзнна?Lukas Kovallk 12:13 PMA huddle is hanbeningMessage Petko Kashinski+ AaC) HubSpot/Service.php© SyncRelatedActivityManager.phpI.onpCachedcrmservicebecorator.onp© ProspectCache.phpС RematchActivityonCrmObiectDetach.ong© CheckAndRetryRemoteMatch.phpiVityservice.pnp*RateLimitexception.phpC) HandlerubspotkateLimit.php© MatchCrmData.phpm A12 ^ vneratordSstate->total Records.round state->aetslansedSecondso, orecisn: 70st' => $state->requestCount > 0 ? round( num: Sstate->getElapsedSecondscoraLoion(PaginationState Sstate, int SteamId): bool{...}crateqysetPaaination(PaainationState Sstate. int SresultsPerPaae): boolf... }private function validateTokenIfNeeded(Client Sclient, PaginationState $state): voidt...}lusageprivate function executeSearchRequest(Client Sclient, string SobjectType, array $payload, PaginationStatetryfreturn $client->search(SobjectType, Spayload);} catch (\Exception $e) {if (Sclient->isUnauthorizedException(Se)) {Sthis->logger->warning('[Hubspot] Got 401 during pagination, attempting token refresh'. ['team id' => Sclient->qetConfiq(->qetTeam©->qetIdo'error' => $e->qetMessage(I):Scuient->ensureValidTokenomains: preload"),cb3ee3\",ccb3ee3"ahectmoy-1778163675-1.0.1.unp• SameSite=None".ALSVIFUTYIISZOrSUTXYE4502KWICascade0 HubSpot Rate Limihowever the iob MatchActivityCrmData.pho is for all CRMs. Will that cause anv issue? Finallv lets think of possible solutions on 100000 calss with onlv 900successtullThinkingcache-get point when it's empty.When the API call actually fires, it takes about 170ms total (including the 150ms call itself plus logging and rollback), which means a worker can only do about 6cycles per second during that phase. So the real waste is bounded to maybe 10-50 wasted API calls per cache TTL period, not per second. Over 30 minutes with a1-second TTL, that's somewhere between 18k and 90k wasted calls—worse than my initial estimate but still manageable compared to having no cache at allcould miticate this with a Redis SETNX lock to sorialize the nrobe so oniy one worker nrobes at a time but that adds comolexity. The simoler anoroach is to_ustaccept the bounded waste as a reasonable tradeoff. Alternatively, I could use a Redis INCR pattern or a SETNX sentinel value to control the probing more precisely.Now I'm noticing the middleware is named HandleHubspotRateLimit but it's actually provider-agnostic-it just catches RateLimitException . The real issue is thatthe proactive cache only exists in HubSoot's client, so Salesforce and Pinedrive fall back to the reactive path without any cache benefit. The midoleware naminglismisleading, but functionally it works for any provider that throws that exception type. I could either rename it to something more generic or leave it as-is sinceFor the 100k jobs hitting the 9k ceiling, I'm looking at three main approaches: extending the retry window from 30 minutes to 6 hours to allow more jobs throughimolementina dispatch-side thrott• MaсBoо.. vDecline(1) MacBoo....Re there coonOu FaceTim.loinAsk anvthina (&4L)+ « CodeClaude Onus 4.7 Medium26.52UTE.RP henarad...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
23491
|
990
|
6
|
2026-05-12T07:55:46.277147+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-12/1778 /Users/lukas/.screenpipe/data/data/2026-05-12/1778572546277_m1.jpg...
|
Slack
|
Slack - Huddle Preview
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Slack - Huddle Preview
Start huddle with
Petko Kas Slack - Huddle Preview
Start huddle with
Petko Kashinski
Microphone
Video
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Cancel
Cancel
Start Huddle
Start Huddle
Steliyan Georgiev, Direct Message, 1 of 7 suggestions...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Slack - Huddle Preview","depth":11,"bounds":{"left":0.45972222,"top":0.06888889,"width":0.093055554,"height":0.017777778},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Start huddle with","depth":12,"bounds":{"left":0.425,"top":0.12,"width":0.08263889,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":12,"bounds":{"left":0.5069444,"top":0.12,"width":0.07430556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXCheckBox","text":"Microphone","depth":13,"bounds":{"left":0.46458334,"top":0.6155556,"width":0.03125,"height":0.05},"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Video","depth":13,"bounds":{"left":0.50416666,"top":0.6155556,"width":0.03125,"height":0.05},"on_screen":true,"role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":11,"bounds":{"left":0.34444445,"top":0.71,"width":0.1,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":13,"bounds":{"left":0.37013888,"top":0.72,"width":0.048611112,"height":0.022222223},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.37013888,"top":0.72,"width":0.004166667,"height":0.02}},{"char_start":1,"char_count":58,"bounds":{"left":0.37013888,"top":0.72,"width":0.05138889,"height":0.11777778}}],"role_description":"text"},{"role":"AXPopUpButton","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":11,"bounds":{"left":0.45,"top":0.71,"width":0.10069445,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"soundcore AeroClip (Bluetooth) (System Default) (Preferred)","depth":13,"bounds":{"left":0.47569445,"top":0.72,"width":0.049305554,"height":0.022222223},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.47569445,"top":0.72,"width":0.0048611113,"height":0.02}},{"char_start":1,"char_count":58,"bounds":{"left":0.47569445,"top":0.72,"width":0.052083332,"height":0.11777778}}],"role_description":"text"},{"role":"AXPopUpButton","text":"FaceTime HD Camera","depth":11,"bounds":{"left":0.5555556,"top":0.71,"width":0.10069445,"height":0.04},"on_screen":true,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"FaceTime HD Camera","depth":13,"bounds":{"left":0.58125,"top":0.72,"width":0.045833334,"height":0.022222223},"on_screen":true,"lines":[{"char_start":0,"char_count":1,"bounds":{"left":0.58125,"top":0.72,"width":0.0055555557,"height":0.02}},{"char_start":1,"char_count":17,"bounds":{"left":0.58125,"top":0.72,"width":0.045833334,"height":0.044444446}}],"role_description":"text"},{"role":"AXButton","text":"Cancel","depth":11,"bounds":{"left":0.44652778,"top":0.80222225,"width":0.031944446,"height":0.05},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Cancel","depth":12,"bounds":{"left":0.44722223,"top":0.85888886,"width":0.030555556,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Start Huddle","depth":11,"bounds":{"left":0.52152777,"top":0.80222225,"width":0.031944446,"height":0.05},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Start Huddle","depth":12,"bounds":{"left":0.5083333,"top":0.85888886,"width":0.059027776,"height":0.02},"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev, Direct Message, 1 of 7 suggestions","depth":10,"on_screen":false,"role_description":"text"}]...
|
1157025436931014837
|
-6721981953587403209
|
visual_change
|
hybrid
|
NULL
|
Slack - Huddle Preview
Start huddle with
Petko Kas Slack - Huddle Preview
Start huddle with
Petko Kashinski
Microphone
Video
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
soundcore AeroClip (Bluetooth) (System Default) (Preferred)
FaceTime HD Camera
FaceTime HD Camera
Cancel
Cancel
Start Huddle
Start Huddle
Steliyan Georgiev, Direct Message, 1 of 7 suggestions
SlackFileEditViewGoHistoryWindowHelp, 0lahl§ Support Daily • in 4h 5 m100% (Tue 12 May 10:55:45PRODEDDescribe what you are looking forDOCKERDOCKER (-zsh)DEV (-zsh)О 8826d Slack - Huddle PreviewT1kibanaasticsearch"["type" : "log""@timestamp" : "2026-05-11T1"data"], "pid" :7, "message": "Unabletoreviveh:9200/"}kibana{"type" : "log""@timestamp" : "2026-05-11T1asticsearch""data"],"pid":7,message": "No livingconnectkibanaugins"{"type" : "log", "@timestamp" : "2026-05-11T1"licensing"],pid":7,"message""Licenseinformaticasticsearch duetoError:No Livingconnectionserror"}kibana{"type" : "log""@timestamp""2026-05-11T1ticsearch""data"],"pid" :7, "message""[ConnectionError]:elasticsearch:9200"}{"type" : "log""@timestamp": "2026-05-11T1asticsearch", "data"],"pid" :7,"Unable to reviveh:9200/"}kibana{"type" : "log""@timestamp": "2026-05-11T]asticsearch", "data"],"pid":7,message""No livingconnectkibanains"1 {"type": "log""@timestamp""2026-05-11T1, "taskManager","taskManager"],"pid" :7 , "message" : "FailLiving connections"}kibana1 {"type": "log", "@timestamp" : "2026-05-11T1ticsearch","data"], "pid" :7, "message" : "[ConnectionError]:arch elasticsearch:9200"}kibana1 {"type":"Log", "@timestamp" : "2026-05-11T1asticsearch", "data"], "pid" :7, "message" : "Unable to reviveh:9200/"}kibanaI {"type" : "log", "@timestamp" : "2026-05-11T1asticsearch", "data"], "pid" :7, "message": "No livingconnectkibanaI {"type" : "log", "@timestamp" : "2026-05-11T]ins","taskManager", "taskManager"], "pid" :7, "message" : "Fai 1Living connections"}kibanaI {"type" : "log", "@timestamp" : "2026-05-11T1ticsearch", "data"], "pid" :7, "message" : "[ConnectionError]:arch elasticsearch:9200"}kibana1 {"type" : "log", "@timestamp" : "2026-05-11T1asticsearch", "data"], "pid" :7, "message" : "Unable to reviveh: 9200/"}kibana1 {"type" : "log", "@timestamp" : "2026-05-11T1asticsearch", "data"], "pid":7, "message" : "No living connect)kibana1 {"type": "log", "@timestamp" : "2026-05-11T1ins",, "taskManager",, "taskManager"], "pid" :7, "message": "FaileLiving connections"}unexpected EOFPetko Kashinski6 0Start huddle with Petko Kashinski• Messages+6 ₫O soundco...4) soundco...U FaceTim...6 дCancelStart HuddleAdd canvasO Filesздрасти даYesterday ~Petko Kashinski 12:13 PMМоже ли да звънна?Lukas Kovalik 12:13 PMдаA huddle happened 12:14 PMYou and Petko Kashinski were in the huddle for8m.Saved for later • Due 2 hours agoPetko Kashinski 12:21 PMplaybackVisitedTodayLukas Kovalik 10:36 AMдобро утроПетко имаш ли минутка да те питам за РНPetko Kashinski 10:52 AMХей ЛукашСлед минутка окей ли е ?Lukas Kovalik 10:52 AMразбира сеPetko Kashinski 10:54 AMRdyHuddle ?Message Petko Kashinskiikas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/infrastructure/dev/docker (develop) $R. Steliyan GeorgievP. Galya Dimitrova...
|
23489
|
NULL
|
NULL
|
NULL
|
|
12720
|
562
|
14
|
2026-05-09T09:26:23.826014+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778318783826_m2.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com&display=popup&enable_granular_consent=true&gis_params=GBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&gsiwebsdk=gis_attributes&include_granted_scopes=true&origin=https%3A%2F%2Fplatform.claude.com&prompt=consent&redirect_uri=gis_transform&response_mode=form_post&response_type=code&scope=openid+profile+email&dsh=S-600047247%3A1778318781326040&o2v=1&service=lso&flowName=GeneralOAuthFlow&opparams=%253Fresponse_mode%253Dform_post%2526enable_granular_consent%253Dtrue%2526gis_params%253DGBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hAMrfzurkfTzAXyhrSl5xKM1A7dwWTrOQBLOvcRtj9R9LsT9tVEuWua7ZUOVE9aCzuTdVTJuq87wRsELMM1w_PHNLuCk6e4Q-b0TmV2Pzg_bh7O_GEEAwy_vHpyuiqlYBkyidZzIH77wtT1YrP3KbcPLBGaUZmubnu3HvotrmzkQlIJOqEWDBbhgThqb2CXvycdNFrMQv3sipKJ14qalS92UHXplC0HL0O_3XksFcayMJQMf7gYJzMD0Epkw6res-Nucty12Rr9mmrpw_dH3usgXOEN6pH6f0NAaW30trSSEDTnSF1oWXBeLfWFC-YSqpzpxGy7QkdvWXSXQYsDD2LSdyBSwIc-EhmKD8a9oXuW1o0eJZ9pHsz3wX8D7DcAe-JADacZsBSS668XiekwZ8CAG0dFbr4Q7k70esIEPazHhZ1FGry3SSoXSC49uPUDY9WZABIcYdQjrz8hWb-CbF2GJKoMqPKZ_90dTEfmETWFFbmdd-wc%26flowName%3DGeneralOAuthFlow%26as%3DS-600047247%253A1778318781326040%26client_id%3D1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fplatform.claude.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":11,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Claude","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review Claude’s","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"on_screen":false,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Waiting for accounts.google.com…","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1583288584581841469
|
-6030219536007534482
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
12717
|
NULL
|
NULL
|
NULL
|
|
10213
|
467
|
12
|
2026-05-08T17:11:34.061915+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778260294061_m1.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com&prompt=select_account&redirect_uri=https%3A%2F%2Fapp.affine.pro%2Foauth%2Fcallback&response_type=code&scope=openid+email+profile&state=%7B%22state%22%3A%2219edc32b-7b8b-4c40-8b2e-692e2b5ab7c4%22%2C%22client%22%3A%22web%22%2C%22provider%22%3A%22Google%22%7D&dsh=S-1355843172%3A1778260292520272&o2v=2&service=lso&flowName=GeneralOAuthFlow&opparams=%253F&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hANcV39jpHwxQU_-Ei7qAiYI2Ml1g25aUziyEMy0komI1AaPdU44CwKWq0J_2t-h5KE7r9LlCWDAh76JykmDjRZ5h2eP78QmgjJ74V3W5YzcUxC7s9Yt8pMGzFVHM0HB6AzF4ptVXUikeHf8Ywty5DieCM1DwJthEMZcDNR_MfVNRE9oa1-zm9M35Js2HgNqVf4eClDfNw8zHOL6IoCXcailAPY3ccaFBLbxI3Sdm95bE9UCwnR7hRn0qUO-LX0qZll3pqVlbNIcke9xlNvqgvf1A-PLnn-9Ha76ETCYfial2PGOh4OakhtZ7efjg1HFrlc1YX15jJpkc9zHUp_RT3HDa_XHYrEb1UgHYX5K5KahWjlZYf-2okFg8dnzlLSDredfFA0E6T_r1g0rQ2zp6Gd_35xrG5qbxdGw0KD0SXRQ8ndwUAF_0PSlfwFUyU-AIAyUiy_qu1PFyJFC5DdnQ7JNwZUF5g%26flowName%3DGeneralOAuthFlow%26as%3DS-1355843172%253A1778260292520272%26client_id%3D690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fapp.affine.pro...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":11,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AFFiNE","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review AFFiNE’s","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"on_screen":true,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Waiting for accounts.google.com…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.12604167,"height":0.015},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8143578436794033074
|
-4842782161424188164
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
10211
|
NULL
|
NULL
|
NULL
|
|
10259
|
469
|
15
|
2026-05-08T17:15:23.093240+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778260523093_m1.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com&prompt=select_account&redirect_uri=https%3A%2F%2Fapp.affine.pro%2Foauth%2Fcallback&response_type=code&scope=openid+email+profile&state=%7B%22state%22%3A%22410a2e2a-54b1-451b-9cbb-857afe60df29%22%2C%22client%22%3A%22web%22%2C%22provider%22%3A%22Google%22%7D&dsh=S-1976060048%3A1778260522005265&o2v=2&service=lso&flowName=GeneralOAuthFlow&opparams=%253F&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hAM58lT2LRrzsqMapDofd2EsvdgUmVHjBsIbrweHpVa1pl3nLtQm7lrmsjfb5LJIFjud3n3Gt5btrganRWzfGQBG8Hy2Hmiuq-m44ytRH1MgHouqWuwskGdsZ36qL0SxGpBqqoWhfis4bSe2cHzE9RCpB3Zhwx5aOnRZE6qDB-jLagzxdl49nD2Dy99QijV2nplwqnzNiJe8vb3lgTdbaVOqocy2cPRgBDyws_Z9wvtqno63icCiZY1VvXKFOt9s5_DKZgTsjyeURu9gTUvm05kChU9P7SAtbL_SXSM4-eTzmj-HoLh52TjqbTuJbdvkem9jJWDRbIPuaQc-6E5SFURiaWQ4FnWVo7fqiQLhResS83g2ZI5hpIAcjYG1r04d4UYizvDbGrd2ZAMTTZFbpTOFDaMl27IixZ-rUYZ0O4vGKkqULTykQNgWGOS72-LMerwmm29Mksktwt1cq74PFuv-l1KxsA%26flowName%3DGeneralOAuthFlow%26as%3DS-1976060048%253A1778260522005265%26client_id%3D690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fapp.affine.pro...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from www.gstatic.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":11,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AFFiNE","depth":12,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":15,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":17,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review AFFiNE’s","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service.","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"on_screen":true,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transferring data from www.gstatic.com…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.15208334,"height":0.015},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5644175781144253312
|
-4842790957517210372
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from www.gstatic.com…...
|
10256
|
NULL
|
NULL
|
NULL
|
|
12719
|
561
|
11
|
2026-05-09T09:26:23.826027+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778318783826_m1.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com&display=popup&enable_granular_consent=true&gis_params=GBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&gsiwebsdk=gis_attributes&include_granted_scopes=true&origin=https%3A%2F%2Fplatform.claude.com&prompt=consent&redirect_uri=gis_transform&response_mode=form_post&response_type=code&scope=openid+profile+email&dsh=S-600047247%3A1778318781326040&o2v=1&service=lso&flowName=GeneralOAuthFlow&opparams=%253Fresponse_mode%253Dform_post%2526enable_granular_consent%253Dtrue%2526gis_params%253DGBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hAMrfzurkfTzAXyhrSl5xKM1A7dwWTrOQBLOvcRtj9R9LsT9tVEuWua7ZUOVE9aCzuTdVTJuq87wRsELMM1w_PHNLuCk6e4Q-b0TmV2Pzg_bh7O_GEEAwy_vHpyuiqlYBkyidZzIH77wtT1YrP3KbcPLBGaUZmubnu3HvotrmzkQlIJOqEWDBbhgThqb2CXvycdNFrMQv3sipKJ14qalS92UHXplC0HL0O_3XksFcayMJQMf7gYJzMD0Epkw6res-Nucty12Rr9mmrpw_dH3usgXOEN6pH6f0NAaW30trSSEDTnSF1oWXBeLfWFC-YSqpzpxGy7QkdvWXSXQYsDD2LSdyBSwIc-EhmKD8a9oXuW1o0eJZ9pHsz3wX8D7DcAe-JADacZsBSS668XiekwZ8CAG0dFbr4Q7k70esIEPazHhZ1FGry3SSoXSC49uPUDY9WZABIcYdQjrz8hWb-CbF2GJKoMqPKZ_90dTEfmETWFFbmdd-wc%26flowName%3DGeneralOAuthFlow%26as%3DS-600047247%253A1778318781326040%26client_id%3D1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fplatform.claude.com...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"bounds":{"left":0.6861111,"top":0.40944445,"width":0.088194445,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":11,"bounds":{"left":0.66944444,"top":0.54888886,"width":0.31388888,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":12,"bounds":{"left":0.66944444,"top":0.54888886,"width":0.19513889,"height":0.045},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":12,"bounds":{"left":0.66944444,"top":0.61333334,"width":0.072569445,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Claude","depth":12,"bounds":{"left":0.7420139,"top":0.61333334,"width":0.038194444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":15,"bounds":{"left":0.65833336,"top":0.67333335,"width":0.3361111,"height":0.075555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":17,"bounds":{"left":0.69722223,"top":0.6888889,"width":0.07013889,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":17,"bounds":{"left":0.69722223,"top":0.71444446,"width":0.10555556,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":15,"bounds":{"left":0.65833336,"top":0.75,"width":0.3361111,"height":0.075555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":17,"bounds":{"left":0.69722223,"top":0.76555556,"width":0.030555556,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":17,"bounds":{"left":0.69722223,"top":0.7911111,"width":0.10104167,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":15,"bounds":{"left":0.65833336,"top":0.82666665,"width":0.3361111,"height":0.057777777},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":17,"bounds":{"left":0.69722223,"top":0.84444445,"width":0.108680554,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review Claude’s","depth":11,"bounds":{"left":0.66944444,"top":0.93222225,"width":0.20659722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":11,"bounds":{"left":0.87604165,"top":0.93222225,"width":0.065625,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":12,"bounds":{"left":0.87604165,"top":0.93222225,"width":0.065625,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":11,"bounds":{"left":0.94166666,"top":0.93222225,"width":0.019097222,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":11,"bounds":{"left":0.66944444,"top":0.95444447,"width":0.078819446,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":12,"bounds":{"left":0.66944444,"top":0.95444447,"width":0.078819446,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":11,"bounds":{"left":0.7482639,"top":0.95444447,"width":0.0024305556,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"bounds":{"left":0.65833336,"top":1.0,"width":0.13854167,"height":-0.023333311},"on_screen":false,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"bounds":{"left":0.66944444,"top":1.0,"width":0.096875,"height":-0.032777786},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"bounds":{"left":0.86180556,"top":1.0,"width":0.034375,"height":-0.01444447},"on_screen":false,"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.8701389,"top":1.0,"width":0.017708333,"height":-0.032777786},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"bounds":{"left":0.90173614,"top":1.0,"width":0.044444446,"height":-0.01444447},"on_screen":false,"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.91006947,"top":1.0,"width":0.027777778,"height":-0.032777786},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"bounds":{"left":0.9517361,"top":1.0,"width":0.039930556,"height":-0.01444447},"on_screen":false,"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.9600694,"top":1.0,"width":0.023263888,"height":-0.032777786},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Waiting for accounts.google.com…","depth":5,"bounds":{"left":0.65555555,"top":0.9827778,"width":0.12604167,"height":0.015},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1583288584581841469
|
-6030219536007534482
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Waiting for accounts.google.com…...
|
12718
|
NULL
|
NULL
|
NULL
|
|
10258
|
470
|
18
|
2026-05-08T17:15:23.093252+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778260523093_m2.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com&prompt=select_account&redirect_uri=https%3A%2F%2Fapp.affine.pro%2Foauth%2Fcallback&response_type=code&scope=openid+email+profile&state=%7B%22state%22%3A%22410a2e2a-54b1-451b-9cbb-857afe60df29%22%2C%22client%22%3A%22web%22%2C%22provider%22%3A%22Google%22%7D&dsh=S-1976060048%3A1778260522005265&o2v=2&service=lso&flowName=GeneralOAuthFlow&opparams=%253F&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hAM58lT2LRrzsqMapDofd2EsvdgUmVHjBsIbrweHpVa1pl3nLtQm7lrmsjfb5LJIFjud3n3Gt5btrganRWzfGQBG8Hy2Hmiuq-m44ytRH1MgHouqWuwskGdsZ36qL0SxGpBqqoWhfis4bSe2cHzE9RCpB3Zhwx5aOnRZE6qDB-jLagzxdl49nD2Dy99QijV2nplwqnzNiJe8vb3lgTdbaVOqocy2cPRgBDyws_Z9wvtqno63icCiZY1VvXKFOt9s5_DKZgTsjyeURu9gTUvm05kChU9P7SAtbL_SXSM4-eTzmj-HoLh52TjqbTuJbdvkem9jJWDRbIPuaQc-6E5SFURiaWQ4FnWVo7fqiQLhResS83g2ZI5hpIAcjYG1r04d4UYizvDbGrd2ZAMTTZFbpTOFDaMl27IixZ-rUYZ0O4vGKkqULTykQNgWGOS72-LMerwmm29Mksktwt1cq74PFuv-l1KxsA%26flowName%3DGeneralOAuthFlow%26as%3DS-1976060048%253A1778260522005265%26client_id%3D690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fapp.affine.pro...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from www.gstatic.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"bounds":{"left":0.46625665,"top":0.35913807,"width":0.042220745,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":11,"bounds":{"left":0.46226728,"top":0.4688747,"width":0.15292554,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":12,"bounds":{"left":0.46226728,"top":0.46727854,"width":0.12849069,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":12,"bounds":{"left":0.46226728,"top":0.52474064,"width":0.03474069,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AFFiNE","depth":12,"bounds":{"left":0.49700797,"top":0.52474064,"width":0.018450798,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":15,"bounds":{"left":0.6258311,"top":0.43056664,"width":0.16356383,"height":0.054269753},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":17,"bounds":{"left":0.64444816,"top":0.44173983,"width":0.03357713,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":17,"bounds":{"left":0.64444816,"top":0.46009576,"width":0.050531916,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":15,"bounds":{"left":0.6258311,"top":0.48563448,"width":0.16356383,"height":0.054269753},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":17,"bounds":{"left":0.64444816,"top":0.49680766,"width":0.01462766,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":17,"bounds":{"left":0.64444816,"top":0.5151636,"width":0.04837101,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":15,"bounds":{"left":0.6258311,"top":0.54070234,"width":0.16356383,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":17,"bounds":{"left":0.64444816,"top":0.5534717,"width":0.052027926,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review AFFiNE’s","depth":11,"bounds":{"left":0.63115025,"top":0.61652035,"width":0.09906915,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":11,"bounds":{"left":0.7302194,"top":0.61652035,"width":0.031416222,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":12,"bounds":{"left":0.7302194,"top":0.61652035,"width":0.031416222,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service.","depth":11,"bounds":{"left":0.63115025,"top":0.61652035,"width":0.13962767,"height":0.030726258},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"bounds":{"left":0.4502992,"top":0.6915403,"width":0.06632314,"height":0.025538707},"on_screen":true,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"bounds":{"left":0.45561835,"top":0.698324,"width":0.04637633,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"bounds":{"left":0.73254657,"top":0.68515563,"width":0.016456118,"height":0.03830806},"on_screen":true,"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.7365359,"top":0.698324,"width":0.008477394,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"bounds":{"left":0.75166225,"top":0.68515563,"width":0.021276595,"height":0.03830806},"on_screen":true,"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.7556516,"top":0.698324,"width":0.013297873,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"bounds":{"left":0.7755984,"top":0.68515563,"width":0.019115692,"height":0.03830806},"on_screen":true,"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.77958775,"top":0.698324,"width":0.011136968,"height":0.012370312},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transferring data from www.gstatic.com…","depth":5,"bounds":{"left":0.2549867,"top":0.9876297,"width":0.07280585,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5644175781144253312
|
-4842790957517210372
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
AFFiNE
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review AFFiNE’s
Privacy Policy
Privacy Policy
and Terms of Service.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from www.gstatic.com…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
10214
|
468
|
17
|
2026-05-08T17:11:36.882863+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-08/1778 /Users/lukas/.screenpipe/data/data/2026-05-08/1778260296882_m2.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/signin/oauth/id?authuser=0& accounts.google.com/signin/oauth/id?authuser=0&part=AJi8hANu-ZJ_YYof4lVauKuQqyMz4BEbYY_EiMBGW0sfKbUQ9TdAtS-T5IaGM4lPtVIwPaSBEbstQaNRB_YsvYn6Z5Olsp0fujLdV4mwWO3MrQlpWHAJ0o-LN03oEeCZyNVKfwzZVReCQbq8osdzS_BCi_imso36mUh767SgpTE65ojCTHqkIfA2Skf-Lg9Pe21hEl8XLXAjbgzG8wZZ8AsdnOii7PdTysE9avB11HvnqURD73hgNSMuuLCD_4xCgdYqogEOwTRAhiZZv54KpiAjgV24cxjnZahbY1QyrqVyOEz58r6_aIbr4KdHIjN-FkRFHYIV1WpaU01nr1i99Z4a12rZy7arPIBPNfsvUQZyGtlCwlGLFPI42h1G-fdf5md1TvXwUSLGyg2trNiTNZjqB6-v3BQkHwFNSbcVMcQHvHHu2xKOikWszMfiQD0Uzk6K-nSOdakzEJDszR3MlmlDiXCE56dBcTaTo3PxUSJVZ3BusPav1s-EUcHlKdPcyEtZ2bd3mU7AmvI2Rhswta_q7PvVkFOkz9TOC7QmIIZSSKiWpyfSSxI4zn7Lw-UPKny04Y8nZ8N3xsDUInL5svCa-3vbSpQIsKJLkxgqUxme__BPXYg7Op6bEoV7SQLunJ8AIez5BFNB7xo1fsxfb8iaosOOfHEyko11jY_3z2GrNsZ5LBaBnNVvrYn2T4eExqTNMikR9oTQdhnolCRQiR5ZuixXy5rZK7H4TjB61mqdvIPkeHLNj2d-dl8Q9b1aZ_jLYAdnbfUUFMo2PCmHkxXZXaAoziO4_QZKnjpeFhxVg15BT_n19zYiy9VKykufIjXxVDaweHrNLCDrceeBc9Si8vrvuYao0Q&flowName=GeneralOAuthFlow&as=S-1355843172%3A1778260292520272&client_id=690608236388-k8tg5kmb75o295ati2g86n6v8hqbg2f5.apps.googleusercontent.com&rapt=AEjHL4NLpWKhpavz9ZAuXUbhDV6LuG30rvyHk-4cElt0jJwHZD4XQ78_BNPl2o4ae8FVtX4B0DoMVi2wQ0oWyeqQ1p9TaTL2TmRR9Xri2Qa1D5_ud3G4ex0#...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Sign in to AFFiNE
Sign in to A Sign in with Google
Sign in to AFFiNE
Sign in to AFFiNE
[EMAIL] selected. Switch account
[EMAIL]
Google will allow AFFiNE to access this info about you
Google will allow AFFiNE to access this info about you
Lukáš Koválik
Name and profile picture
[EMAIL]
Email address
Review AFFiNE’s
privacy policy
privacy policy
and Terms of Service to understand how AFFiNE will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Waiting for app.affine.pro…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":12,"bounds":{"left":0.46625665,"top":0.30766162,"width":0.042220745,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Sign in to AFFiNE","depth":11,"bounds":{"left":0.46226728,"top":0.41739824,"width":0.15292554,"height":0.0415004},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sign in to AFFiNE","depth":12,"bounds":{"left":0.46226728,"top":0.41580206,"width":0.11253324,"height":0.044692736},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"kovaliklukas@gmail.com selected. Switch account","depth":12,"bounds":{"left":0.46226728,"top":0.471668,"width":0.076130316,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":14,"bounds":{"left":0.4742354,"top":0.4772546,"width":0.05285904,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Google will allow AFFiNE to access this info about you","depth":14,"bounds":{"left":0.63115025,"top":0.3790902,"width":0.15292554,"height":0.03830806},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Google will allow AFFiNE to access this info about you","depth":16,"bounds":{"left":0.63115025,"top":0.37869114,"width":0.14876994,"height":0.039505187},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukáš Koválik","depth":16,"bounds":{"left":0.64444816,"top":0.4329609,"width":0.031914894,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Name and profile picture","depth":16,"bounds":{"left":0.64444816,"top":0.45331204,"width":0.05219415,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":16,"bounds":{"left":0.64444816,"top":0.4820431,"width":0.057845745,"height":0.016360734},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Email address","depth":16,"bounds":{"left":0.64444816,"top":0.50239426,"width":0.029421542,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review AFFiNE’s","depth":14,"bounds":{"left":0.63115025,"top":0.54389465,"width":0.03557181,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"privacy policy","depth":14,"bounds":{"left":0.66672206,"top":0.54389465,"width":0.031416222,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"privacy policy","depth":15,"bounds":{"left":0.66672206,"top":0.54389465,"width":0.031416222,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and Terms of Service to understand how AFFiNE will process and protect your data.","depth":14,"bounds":{"left":0.63115025,"top":0.54389465,"width":0.14311835,"height":0.030726258},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To make changes at any time, go to your","depth":14,"bounds":{"left":0.63115025,"top":0.58539504,"width":0.08610372,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Google Account","depth":14,"bounds":{"left":0.717254,"top":0.58539504,"width":0.036236703,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google Account","depth":15,"bounds":{"left":0.717254,"top":0.58539504,"width":0.036236703,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":14,"bounds":{"left":0.7534907,"top":0.58539504,"width":0.0013297872,"height":0.014764565},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":14,"bounds":{"left":0.63115025,"top":0.6109338,"width":0.03873005,"height":0.014764565},"on_screen":true,"subrole":"AXUnknown"},{"role":"AXStaticText","text":"Waiting for app.affine.pro…","depth":5,"bounds":{"left":0.2549867,"top":0.9876297,"width":0.04737367,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
3465359331032241945
|
-7760551454740053396
|
click
|
accessibility
|
NULL
|
Sign in with Google
Sign in to AFFiNE
Sign in to A Sign in with Google
Sign in to AFFiNE
Sign in to AFFiNE
[EMAIL] selected. Switch account
[EMAIL]
Google will allow AFFiNE to access this info about you
Google will allow AFFiNE to access this info about you
Lukáš Koválik
Name and profile picture
[EMAIL]
Email address
Review AFFiNE’s
privacy policy
privacy policy
and Terms of Service to understand how AFFiNE will process and protect your data.
To make changes at any time, go to your
Google Account
Google Account
.
Learn more about
Waiting for app.affine.pro…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
12717
|
562
|
13
|
2026-05-09T09:26:20.862792+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778318780862_m2.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/v3/signin/accountchooser?acces accounts.google.com/v3/signin/accountchooser?access_type=offline&client_id=1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com&display=popup&enable_granular_consent=true&gis_params=GBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&gsiwebsdk=gis_attributes&include_granted_scopes=true&origin=https%3A%2F%2Fplatform.claude.com&prompt=consent&redirect_uri=gis_transform&response_mode=form_post&response_type=code&scope=openid+profile+email&dsh=S-600047247%3A1778318781326040&o2v=1&service=lso&flowName=GeneralOAuthFlow&opparams=%253Fresponse_mode%253Dform_post%2526enable_granular_consent%253Dtrue%2526gis_params%253DGBMqK1RBOWdSS25WZkhkOWozT0xrZkIwZnhsUVZFNWVoamdjSU9NY1pleUwxKzg4AUIKYXV0aDU3ODk3OWgB&continue=https%3A%2F%2Faccounts.google.com%2Fsignin%2Foauth%2Fconsent%3Fauthuser%3Dunknown%26part%3DAJi8hAMrfzurkfTzAXyhrSl5xKM1A7dwWTrOQBLOvcRtj9R9LsT9tVEuWua7ZUOVE9aCzuTdVTJuq87wRsELMM1w_PHNLuCk6e4Q-b0TmV2Pzg_bh7O_GEEAwy_vHpyuiqlYBkyidZzIH77wtT1YrP3KbcPLBGaUZmubnu3HvotrmzkQlIJOqEWDBbhgThqb2CXvycdNFrMQv3sipKJ14qalS92UHXplC0HL0O_3XksFcayMJQMf7gYJzMD0Epkw6res-Nucty12Rr9mmrpw_dH3usgXOEN6pH6f0NAaW30trSSEDTnSF1oWXBeLfWFC-YSqpzpxGy7QkdvWXSXQYsDD2LSdyBSwIc-EhmKD8a9oXuW1o0eJZ9pHsz3wX8D7DcAe-JADacZsBSS668XiekwZ8CAG0dFbr4Q7k70esIEPazHhZ1FGry3SSoXSC49uPUDY9WZABIcYdQjrz8hWb-CbF2GJKoMqPKZ_90dTEfmETWFFbmdd-wc%26flowName%3DGeneralOAuthFlow%26as%3DS-600047247%253A1778318781326040%26client_id%3D1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com%26requestPath%3D%252Fsignin%252Foauth%252Fconsent%23&app_domain=https%3A%2F%2Fplatform.claude.com...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from lh3.googleusercontent.com…...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Choose an account","depth":10,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Choose an account","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to continue to","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Claude","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Lukáš Koválik kovaliklukas@gmail.com","depth":14,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukáš Koválik","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas lukakovalik@gmail.com","depth":14,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"lukakovalik@gmail.com","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Use another account","depth":14,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Use another account","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Before using this app, you can review Claude’s","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"on_screen":false,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"on_screen":false,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms","depth":12,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Transferring data from lh3.googleusercontent.com…","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6070373196616916704
|
-1435984957680425874
|
click
|
accessibility
|
NULL
|
Sign in with Google
Choose an account
Choose an ac Sign in with Google
Choose an account
Choose an account
to continue to
Claude
Lukáš Koválik [EMAIL]
Lukáš Koválik
[EMAIL]
Lukas [EMAIL]
Lukas
[EMAIL]
Use another account
Use another account
Before using this app, you can review Claude’s
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
English (United Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms
Transferring data from lh3.googleusercontent.com…...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
12721
|
561
|
12
|
2026-05-09T09:26:26.273187+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-09/1778 /Users/lukas/.screenpipe/data/data/2026-05-09/1778318786273_m1.jpg...
|
Firefox
|
Sign in – Google accounts — Personal
|
True
|
accounts.google.com/signin/oauth/id?authuser=0& accounts.google.com/signin/oauth/id?authuser=0&part=AJi8hAMmWcUg__qhtTkwn25KJT43kiAdy55anWovX6JjJzzSl-mWdk_-a7SKguch00gKjcpXU4tKfP4HxSRFffY4D8ftb837H0c9L6xlmdBuC2SsbNuFzXK9GIDUXiTV55ylQhwM-rEjed85cbgZ1Xi9J8TWG_owHFedggyMJktONTszYYS8p9Ruc9ShCkbHKjhHUHkRxNYjpX7jSYITkjP9M5DcXRgTyn-aWn38ty0nqwis8UmVEHG8TzT-JRIz92Q-FFKIJgqxtp6DdK4WYkaYMA_yIhDN6Bu115Vz6v1W5bK6eWZDsAFhEVa4uXqA4tOlIo4avlHVkPm6dmMmdZkZBT9Q4e_lbVUlGUxoxrM4dU51orv0Actm7Ji8XT_WMUnGQTBB4GcZeP0869m0jWODzjyxKiuhY8iDsOHuakSp7ufDzIOxpkGQu_fzW2awRgJZ2TJzF3oqFm5Keh4cL8zZjdoI5DBEgMO6JDy90ErCtkE_5isevpGwxXLB2_58dXKN_42I1VcJlXXufLhOHMmOkxKdatU8MW_myGpVjQc5WKdjS4lfsHZdTgqGKlxHtc3AnG8ru8kZXIbEFIbLl5qam8hLA-kUG2RONYPdqn6g8iJuDKnhlRXCT7B7hRENDHXXWX_GFxrsg1jtWEPwRKxuuP69QsdFITUvkw9b5gKQd2cPO3ohnEzdBSwneL-i-9HlgPsAOiE3rg5_MPO2UPnMo3xJQQcPnEandNLQIOHGBecr_tCGB5j07Me5Uswpeg05g_hMEsWCZTjvdTHZuKnhCn6kWj8ezyFOOdBV30AeduOzt0tCVAh47xpmjEYmiep8N30on-YubbWcpTuKSbeCDyG-9ZEgR3RTCKsPEGIdAf8ke6203e4U7j8xRZdxPJMkP8MhxknYQxS5UBapx0B3K3c7NxXafswncWaHHw8unEZcgEVcd4scT2Pvp0-BaX8t69-_kaU2XGVgiTgPtUa6rkZij1g3robfohicrHksyMOqAd4ETdE&flowName=GeneralOAuthFlow&as=S-600047247%3A1778318781326040&client_id=1062961139910-l2m55cb9h51u5cuc9c56eb3fevouidh9.apps.googleusercontent.com&rapt=AEjHL4MJC3tFwxSgOy3DHevHfxKy3P3soUhzVJhPY5yI9tSeaUOy7bCh7-7NYinB_HsSiET9ux8I_AMJPgMdMbVClzAM-6SeiH5UkTuKUMX4aOSH6No9GCk#...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign in with Google
You're signing back in to Sign in with Google
You're signing back in to Claude
You're signing back in to Claude
[EMAIL] selected. Switch account
[EMAIL]
Review Claude’s
privacy policy
privacy policy
and
Terms of Service
Terms of Service
to understand how Claude 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 Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Sign in with Google","depth":11,"bounds":{"left":0.6861111,"top":0.40944445,"width":0.088194445,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"You're signing back in to Claude","depth":10,"bounds":{"left":0.66944444,"top":0.54888886,"width":0.31388888,"height":0.08888889},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You're signing back in to Claude","depth":11,"bounds":{"left":0.66944444,"top":0.54888886,"width":0.24270834,"height":0.08944444},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"kovaliklukas@gmail.com selected. Switch account","depth":11,"bounds":{"left":0.66944444,"top":0.65555555,"width":0.15902779,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"kovaliklukas@gmail.com","depth":13,"bounds":{"left":0.6944444,"top":0.66333336,"width":0.110416666,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Review Claude’s","depth":13,"bounds":{"left":0.66944444,"top":0.7277778,"width":0.07361111,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"privacy policy","depth":13,"bounds":{"left":0.7430556,"top":0.7277778,"width":0.065972224,"height":0.020555556},"on_screen":true,"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.7430556,"top":0.7277778,"width":0.065972224,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":13,"bounds":{"left":0.8090278,"top":0.7277778,"width":0.021527778,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":13,"bounds":{"left":0.83055556,"top":0.7277778,"width":0.078819446,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":14,"bounds":{"left":0.83055556,"top":0.7277778,"width":0.078819446,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to understand how Claude will process and protect your data.","depth":13,"bounds":{"left":0.66944444,"top":0.7277778,"width":0.30416667,"height":0.042777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To make changes at any time, go to your","depth":13,"bounds":{"left":0.66944444,"top":0.78555554,"width":0.17986111,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Google Account","depth":13,"bounds":{"left":0.84930557,"top":0.78555554,"width":0.07569444,"height":0.020555556},"on_screen":true,"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.84930557,"top":0.78555554,"width":0.07569444,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"bounds":{"left":0.925,"top":0.78555554,"width":0.0027777778,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Learn more about","depth":13,"bounds":{"left":0.66944444,"top":0.8211111,"width":0.08090278,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign in with Google","depth":13,"bounds":{"left":0.7503472,"top":0.8211111,"width":0.09131944,"height":0.020555556},"on_screen":true,"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.7503472,"top":0.8211111,"width":0.09131944,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":13,"bounds":{"left":0.84166664,"top":0.8211111,"width":0.0027777778,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cancel","depth":10,"bounds":{"left":0.66944444,"top":0.9022222,"width":0.15277778,"height":0.044444446},"on_screen":true,"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.73020834,"top":0.91444445,"width":0.03125,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Continue","depth":10,"bounds":{"left":0.83055556,"top":0.9022222,"width":0.15277778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Continue","depth":11,"bounds":{"left":0.88611114,"top":0.91444445,"width":0.041666668,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"English (United Kingdom)","depth":10,"bounds":{"left":0.65833336,"top":0.9911111,"width":0.13854167,"height":0.0088889},"on_screen":true,"value":"English (United Kingdom)","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,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"English (United Kingdom)","depth":12,"bounds":{"left":0.66944444,"top":1.0,"width":0.096875,"height":-0.0005555153},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Help","depth":11,"bounds":{"left":0.86180556,"top":0.9822222,"width":0.034375,"height":0.0177778},"on_screen":true,"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.8701389,"top":1.0,"width":0.017708333,"height":-0.0005555153},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy","depth":11,"bounds":{"left":0.90173614,"top":0.9822222,"width":0.044444446,"height":0.0177778},"on_screen":true,"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.91006947,"top":1.0,"width":0.027777778,"height":-0.0005555153},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms","depth":11,"bounds":{"left":0.9517361,"top":0.9822222,"width":0.039930556,"height":0.0177778},"on_screen":true,"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.9600694,"top":1.0,"width":0.023263888,"height":-0.0005555153},"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-7385647753092079972
|
-1550190614969667970
|
visual_change
|
accessibility
|
NULL
|
Sign in with Google
You're signing back in to Sign in with Google
You're signing back in to Claude
You're signing back in to Claude
[EMAIL] selected. Switch account
[EMAIL]
Review Claude’s
privacy policy
privacy policy
and
Terms of Service
Terms of Service
to understand how Claude 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 Kingdom)
English (United Kingdom)
Help
Help
Privacy
Privacy
Terms
Terms...
|
NULL
|
NULL
|
NULL
|
NULL
|