|
31863
|
649
|
8
|
2026-04-16T06:39:52.191979+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776321592191_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarks~ Google Gemini FirefoxFileEoitViewHistoryBookmarks~ Google GeminiProfilesToolsWindow Helpgithub.com/jiminny/app/pull/11879/changes#diff-ad7d09d1369ba6814f9dec67c66ecf315ace7dc9ab3d9f3bff955260afdf98c1...Jy 20541 cleanup stale purged crm objects #11879l1 OpenAll commitsVasil-Jiminny wants to merge 37 commits into master from JY-20541-cLeanup-stale-purged-crm-objects [M°• Filter files..& For you - Confluence• F appv app/Listeners/Activities/Crm/MatchCrmObject.php 0 4// Unset any associated crm Data54$logger->info('[MatchCrmObjectl Ignoring crm data because of prospect strategy',b Lukas Kovalik - Time Offu Product Growth Plattorm Userpilo" Userpilot(fix(security): composer dependend JiminnyNew Tab* Jy 20541 cleanup stale purged+ New Tabcormmuis we recore lo loneel cxolo lll uloremote CRM.• Logging: It logs that the record wasn'tfound remotely.• Event Dispatching: It dispatches anevent called RemoteCrmRecordDeleted.This is a crucial design pattern. Instead ofdeleting the record directly from thedatabase inside this validator, itannounces to the rest of the applicationthat the record is gone. Other parts ofthe application (event listeners) will hearthis and handle the actual database soft-deletion or cleanup.• Return: It returns null, signaling to thecaller that the object is no longer valid.v • Events/CrmD RemoteCrmRecordDeleted.phpListeners55Acuiviuies/crmiE MatchCrmObject.php# Crm• RemoteCrmRecordDeletedLi…..627 ProvidersE EventServiceProvider.phpv = Services/Crm6566~ E CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.php> D tests/Unit69Key Takeaways & Best Practices Used• Fail-Safe Design: By explicitly catchingHttpNotFoundException for deletionsand a generic Exception for everythingelse, the developer ensures thattemporary API outages don't accidentallywipe out local data.• Event-Driven Architecture: UsingLaravel's Dispatcher keeps the classstrictly focused on validating (SingleResponsibility Principle). It doesn't handledatabase deletions; it just fires an event.• Performance Optimization: The 120-daythreshold ensures that the applicationisn't needlessly making thousands of APIcalls for records that were recentlyupdated anyway.747580• Enter a prompt for Gemini+ProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize page'activity_id' => sactivity->getId(),'strategy' = get_class($prospectSearchStrategy),@@ -59,33 +55,33 @@ public function handle($event): voidrecurn,if (sparticioant->email) {// Should we really execute an email lookup altogether?if(! $emailHelper->shouldPerformLookup(Steam, $participant→>email)) {$logger->info('[MatchCrm0bject] Email domain belongs to the team, skippingcrml lookup,activity_1d' => sactivity->getido),"team_1d' => Steam->getid(),'email' = $participant->email,]);// Update participant with jiminny account$user = $teamRepository->findActiveTeamMemberByEmail($team, $participant->email);if ($user instanceof Models\User) {Sparticipant->user_id = $user->getId();Sparticipant→>save();reculln// If we have previously matched their crm identity, sync to activity if missingdata. and then skip lookuo.lif ($participant->lead_id || $participant->contact_id) {$this->syncActivityCrmFromParticipant($activity, $participant, $logger);$logger->into('[MatchCrmobject) Participant already has a crm prospectidentified, skipping crm lookup', I'activity_id' = Sactivity->getId(),'email' => $participant->email,return.@@ -97,31 +93,27 @@ public function handle($event): voidRemoteCrmRecordDeletedListener ^ V Highlight All [ Match Case Match Diacritics = Whole Words 5 of 15 matches505152555658616265666769738284+ +>0 lbl • | Daily - Platform • in 6mA100% CS•Thu 16 Apr 9:39:526 / 12 viewedAwallind aporovali+58 -68 UUd4• Viewed$logger->info('[MatchCrmObject] Ignoring crm data because of prospect strategy','activity_id' => sactivity->getId(),'strategy' = get_class($prospectSearchStrategy),recurn,$email = $participant->getEmailAddress();if ($email !== nullSã ! $emailHelper->shouldPerformLookup($team, $email)$logger->info(' [MatchCrmObject] Email domain belongs to the team, skipping crmlookup', ['activity_id' = Sactivity->getId(),'team_id' = steam->getId(),'email' = $email,1);$teamMember = $teamRepository->findActiveTeamMemberByEmail($team, $email);if ($teamMember instanceof Models\User) {$participant->setUserId($teamMember->getId());sparticloant→>saverreturn;// If we have previously matched their crm identity.// sync the crm object to get the freshest state, then skip any further lookupif ($participant->getLeadId() !== null || $participant->getContactId() !== null) {$this->syncActivityCrmFromParticipant($activity, $participant, $logger);$logger->info(' [MatchCrmObject] Participant already has a crm prospectidentified, skipping crm lookup', 1'activity_1d' => Sactivity->getid@),'email' => $email,1);return:...
|
NULL
|
-8715744717839695435
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarks~ Google Gemini FirefoxFileEoitViewHistoryBookmarks~ Google GeminiProfilesToolsWindow Helpgithub.com/jiminny/app/pull/11879/changes#diff-ad7d09d1369ba6814f9dec67c66ecf315ace7dc9ab3d9f3bff955260afdf98c1...Jy 20541 cleanup stale purged crm objects #11879l1 OpenAll commitsVasil-Jiminny wants to merge 37 commits into master from JY-20541-cLeanup-stale-purged-crm-objects [M°• Filter files..& For you - Confluence• F appv app/Listeners/Activities/Crm/MatchCrmObject.php 0 4// Unset any associated crm Data54$logger->info('[MatchCrmObjectl Ignoring crm data because of prospect strategy',b Lukas Kovalik - Time Offu Product Growth Plattorm Userpilo" Userpilot(fix(security): composer dependend JiminnyNew Tab* Jy 20541 cleanup stale purged+ New Tabcormmuis we recore lo loneel cxolo lll uloremote CRM.• Logging: It logs that the record wasn'tfound remotely.• Event Dispatching: It dispatches anevent called RemoteCrmRecordDeleted.This is a crucial design pattern. Instead ofdeleting the record directly from thedatabase inside this validator, itannounces to the rest of the applicationthat the record is gone. Other parts ofthe application (event listeners) will hearthis and handle the actual database soft-deletion or cleanup.• Return: It returns null, signaling to thecaller that the object is no longer valid.v • Events/CrmD RemoteCrmRecordDeleted.phpListeners55Acuiviuies/crmiE MatchCrmObject.php# Crm• RemoteCrmRecordDeletedLi…..627 ProvidersE EventServiceProvider.phpv = Services/Crm6566~ E CrmObjects/ValidatorsD StaleRecordValidator.phpE CachedCrmServiceDecorator....E ProspectCache.php> D tests/Unit69Key Takeaways & Best Practices Used• Fail-Safe Design: By explicitly catchingHttpNotFoundException for deletionsand a generic Exception for everythingelse, the developer ensures thattemporary API outages don't accidentallywipe out local data.• Event-Driven Architecture: UsingLaravel's Dispatcher keeps the classstrictly focused on validating (SingleResponsibility Principle). It doesn't handledatabase deletions; it just fires an event.• Performance Optimization: The 120-daythreshold ensures that the applicationisn't needlessly making thousands of APIcalls for records that were recentlyupdated anyway.747580• Enter a prompt for Gemini+ProvYour Jiminny chats aren't used to improve our models. Gemini is Alane can make mistakes, Inciualne aoout peodleYour privacy & GeminiSummarize page'activity_id' => sactivity->getId(),'strategy' = get_class($prospectSearchStrategy),@@ -59,33 +55,33 @@ public function handle($event): voidrecurn,if (sparticioant->email) {// Should we really execute an email lookup altogether?if(! $emailHelper->shouldPerformLookup(Steam, $participant→>email)) {$logger->info('[MatchCrm0bject] Email domain belongs to the team, skippingcrml lookup,activity_1d' => sactivity->getido),"team_1d' => Steam->getid(),'email' = $participant->email,]);// Update participant with jiminny account$user = $teamRepository->findActiveTeamMemberByEmail($team, $participant->email);if ($user instanceof Models\User) {Sparticipant->user_id = $user->getId();Sparticipant→>save();reculln// If we have previously matched their crm identity, sync to activity if missingdata. and then skip lookuo.lif ($participant->lead_id || $participant->contact_id) {$this->syncActivityCrmFromParticipant($activity, $participant, $logger);$logger->into('[MatchCrmobject) Participant already has a crm prospectidentified, skipping crm lookup', I'activity_id' = Sactivity->getId(),'email' => $participant->email,return.@@ -97,31 +93,27 @@ public function handle($event): voidRemoteCrmRecordDeletedListener ^ V Highlight All [ Match Case Match Diacritics = Whole Words 5 of 15 matches505152555658616265666769738284+ +>0 lbl • | Daily - Platform • in 6mA100% CS•Thu 16 Apr 9:39:526 / 12 viewedAwallind aporovali+58 -68 UUd4• Viewed$logger->info('[MatchCrmObject] Ignoring crm data because of prospect strategy','activity_id' => sactivity->getId(),'strategy' = get_class($prospectSearchStrategy),recurn,$email = $participant->getEmailAddress();if ($email !== nullSã ! $emailHelper->shouldPerformLookup($team, $email)$logger->info(' [MatchCrmObject] Email domain belongs to the team, skipping crmlookup', ['activity_id' = Sactivity->getId(),'team_id' = steam->getId(),'email' = $email,1);$teamMember = $teamRepository->findActiveTeamMemberByEmail($team, $email);if ($teamMember instanceof Models\User) {$participant->setUserId($teamMember->getId());sparticloant→>saverreturn;// If we have previously matched their crm identity.// sync the crm object to get the freshest state, then skip any further lookupif ($participant->getLeadId() !== null || $participant->getContactId() !== null) {$this->syncActivityCrmFromParticipant($activity, $participant, $logger);$logger->info(' [MatchCrmObject] Participant already has a crm prospectidentified, skipping crm lookup', 1'activity_1d' => Sactivity->getid@),'email' => $email,1);return:...
|
NULL
|
|
25371
|
544
|
70
|
2026-04-15T12:50:34.408896+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776257434408_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
11516218735/35Castle AgeGame Paused (P)Scout Caval 11516218735/35Castle AgeGame Paused (P)Scout CavalryT 0/2kovalfklukas (Britons))43/438 Almish Yiltawar: 1611/1611 GШ5 Magnus Olafsson: 1607/16076 Laszlo I: 1555/15557 Maximilian of Habsburg: 1543/1543m3 Huascár: 1533/15331 kovaliklukas: 1533/1533Rajyapala: 1531/15314 Louis VI: 1525/1525...
|
NULL
|
-8715738216326214240
|
NULL
|
visual_change
|
ocr
|
NULL
|
11516218735/35Castle AgeGame Paused (P)Scout Caval 11516218735/35Castle AgeGame Paused (P)Scout CavalryT 0/2kovalfklukas (Britons))43/438 Almish Yiltawar: 1611/1611 GШ5 Magnus Olafsson: 1607/16076 Laszlo I: 1555/15557 Maximilian of Habsburg: 1543/1543m3 Huascár: 1533/15331 kovaliklukas: 1533/1533Rajyapala: 1531/15314 Louis VI: 1525/1525...
|
25369
|
|
35829
|
729
|
46
|
2026-04-16T10:10:05.928527+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334205928_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileEditViewHistoryWindowJiminny ...DMs= Unrea SackFileEditViewHistoryWindowJiminny ...DMs= Unreads@ Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMoreohannels# ai-chapter# alerts# backend# contusion-clinic# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# support# thank-yous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...P.. Adelina Petrova**:AppsToastJira CloudHelpQ Search Jiminny Inc& jiminny-x-integration-app8 18• Messagest Add canvasC Files* Pins@ Bookmarks+Lukas Kovalik 3:37 PMs rreared to tne issue Nikolav renorea.6 replies Last reply 1 year agoGui 3:43 PMO joined jiminny-x-integration-app via invite.January 16th, 2025Nikolay Ivanov 5:11 PMHey [URL_WITH_CREDENTIALS] console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId": "66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642e4e41D0ta",inuotlonkey"."eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction && connection. disconnected === false) €veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:05CascadeIntegration App ConneWhether it resolves as null / undefined if the user closes the modallWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaselttelatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z","retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled atera successul connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → restnevertrec• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo ulonKcorMooLnUSuTNoyuoU4ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
-8715557556034173145
|
NULL
|
visual_change
|
ocr
|
NULL
|
SackFileEditViewHistoryWindowJiminny ...DMs= Unrea SackFileEditViewHistoryWindowJiminny ...DMs= Unreads@ Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMoreohannels# ai-chapter# alerts# backend# contusion-clinic# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# support# thank-yous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...P.. Adelina Petrova**:AppsToastJira CloudHelpQ Search Jiminny Inc& jiminny-x-integration-app8 18• Messagest Add canvasC Files* Pins@ Bookmarks+Lukas Kovalik 3:37 PMs rreared to tne issue Nikolav renorea.6 replies Last reply 1 year agoGui 3:43 PMO joined jiminny-x-integration-app via invite.January 16th, 2025Nikolay Ivanov 5:11 PMHey [URL_WITH_CREDENTIALS] console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId": "66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642e4e41D0ta",inuotlonkey"."eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction && connection. disconnected === false) €veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:05CascadeIntegration App ConneWhether it resolves as null / undefined if the user closes the modallWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaselttelatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z","retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled atera successul connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → restnevertrec• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo ulonKcorMooLnUSuTNoyuoU4ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
|
6290
|
114
|
35
|
2026-04-13T13:47:10.455739+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-13/1776 /Users/lukas/.screenpipe/data/data/2026-04-13/1776088030455_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
OrionFileEditViewHistoryBookmarksToolsDevelopWindo OrionFileEditViewHistoryBookmarksToolsDevelopWindowHelp•Activity MonitorAll ProcessesProcess NameWardaSynthesizer_arm64cameracapturedMacinTalkAUSPvoicebankingddeletedtrialdcom.apple.geodASConfigurationSubscriberASConfigurationSubscriberIsdAppSSODaemonappstoredLegacyProfilesSubscribercom.microsoft.autoupdate.helperzshScreenSharingSubscribermediaremotedzshPasscodeSettingsSubscriberInteractiveLegacyProfilesSubscriberSoftwareUpdateSubscriberaudiomxdgamepolicydSoftwareUpdateSubscriberInteractiveLegacyProfilesSubscribermapssyncdzshAccountSubscriberMEMORY PRESSURElthlMem..0,0 mo6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB5,9 MB5,9 MB5,9 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,7 MB5,7 MB5,7 MB5,7 MB5,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% [Mon 13 Apr 16:47:10CPUMemoryEnergyDiskNetworkThreadsPortsTIvo65222222627072698844313763513374316722342522228283156742625832225PID908105499081690817906708896889150921199212368790761906849209533665150920763435011921119207492110107558592117920728914848919211216,00 GB13,04 GB2,91 GB1,38 GBApp Memory:Wired Memory:Compressed:Userlukas_cmiodalassistlukaslukaslukaslukas_locationd_rmdlukaslukasroot_appstorelukasrootlukaslukasrootlukaslukaslukas_rmd_audiomxdrootlukas_rmdlukaslukas_rmd5,62 GB2,57 GB4,28 GB...
|
NULL
|
-8715296881305419542
|
NULL
|
click
|
ocr
|
NULL
|
OrionFileEditViewHistoryBookmarksToolsDevelopWindo OrionFileEditViewHistoryBookmarksToolsDevelopWindowHelp•Activity MonitorAll ProcessesProcess NameWardaSynthesizer_arm64cameracapturedMacinTalkAUSPvoicebankingddeletedtrialdcom.apple.geodASConfigurationSubscriberASConfigurationSubscriberIsdAppSSODaemonappstoredLegacyProfilesSubscribercom.microsoft.autoupdate.helperzshScreenSharingSubscribermediaremotedzshPasscodeSettingsSubscriberInteractiveLegacyProfilesSubscriberSoftwareUpdateSubscriberaudiomxdgamepolicydSoftwareUpdateSubscriberInteractiveLegacyProfilesSubscribermapssyncdzshAccountSubscriberMEMORY PRESSURElthlMem..0,0 mo6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB6,0 MB5,9 MB5,9 MB5,9 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,8 MB5,7 MB5,7 MB5,7 MB5,7 MB5,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% [Mon 13 Apr 16:47:10CPUMemoryEnergyDiskNetworkThreadsPortsTIvo65222222627072698844313763513374316722342522228283156742625832225PID908105499081690817906708896889150921199212368790761906849209533665150920763435011921119207492110107558592117920728914848919211216,00 GB13,04 GB2,91 GB1,38 GBApp Memory:Wired Memory:Compressed:Userlukas_cmiodalassistlukaslukaslukaslukas_locationd_rmdlukaslukasroot_appstorelukasrootlukaslukasrootlukaslukaslukas_rmd_audiomxdrootlukas_rmdlukaslukas_rmd5,62 GB2,57 GB4,28 GB...
|
6289
|
|
18325
|
390
|
9
|
2026-04-14T16:13:50.846048+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776183230846_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpED→Search Jiminny IncHomeDMsActivityFilesLaterJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Aneliya Angelova, ...86 0• MessagesAdd canvasпредполагTodayПДФ-а. Неправя?O Files+чямаме в шрифта на-, рен какво да ги@Nikolay Yankov, някой от горните ли имашпредвид или трето? (edited)Nikolay Yankov 4:09 PMпоследния дето пратих..•Steliyan Georgiev 4:09 PMда, за него говоря и азNikolay Yankov 4:10 PMможе би да ги скипваме такива emojis* 1MoreDirect messagesAneliya Angelova, ...Vasil Vasilevда не пречат на процесването и отговораSteliyan GeorgievAdelina Petrova, Ili...Ro Adelina Petrova% Galya DimitrovaRs Nikolay Nikolov "2Galya Dimitrova, Ni...2Galya Dimitrova, Ni...Steliyan Georgiev 4:10 PMне сьм много сигурен какLukas Kovalik 5:41 PMсега ще го добавя това за disable on expired,после може да се тества по сьщия начинкато генериране сьс сьщата командаH1Newi: AppsNikolay Yankov 6:14 PMпушнах фикса за delete да маха реда отраблицатаJira Cloud+ToastMessage Aneliya Angelova, Nikolay Yankov, Steli...Google Cale...+(lol14Activity MonitorAll ProcessesProcess NameBoosteroidFirefoxCP Isolated Web ContentWindowServerFirefoxFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)Notion Calendar Helper (Renderer)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperSlack Helper (Renderer)Notion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeMEMORY PRESSUREMem...2,01 GB1,19 GB995,7 MB890,0 MB786,2 MB766,6 MB744,8 MB732,5 MB637,4 MB599,3 MB592,3 MB549,7 MB546,9 MB525,6 MB508,8 MB484,5 MB475,6 MB467,0 MB417,8 MB395,6 MB393,2 MB387,3 MB375,5 MB340,4 MB335,8 MB321,1 MB278,9 MB278,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <47Tue 14 Apr 19:13:50CPUMemoryDiskThreads382423817429252415112627152127232325232628242824232513EnergyPorts59612416 15494070812612612216 45617216623622917633312812011912312012312912312612512012372PID248351470040714664801460035848495004784226548248431467380192427311487087349623340701479150891133432824628931710951120232249278005091016,00 GB14,27 GB<1,67 GB2,72 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,84 GB2,96 GB6,92 GB...
|
NULL
|
-8715231526665010293
|
NULL
|
click
|
ocr
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpED→Search Jiminny IncHomeDMsActivityFilesLaterJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...Aneliya Angelova, ...86 0• MessagesAdd canvasпредполагTodayПДФ-а. Неправя?O Files+чямаме в шрифта на-, рен какво да ги@Nikolay Yankov, някой от горните ли имашпредвид или трето? (edited)Nikolay Yankov 4:09 PMпоследния дето пратих..•Steliyan Georgiev 4:09 PMда, за него говоря и азNikolay Yankov 4:10 PMможе би да ги скипваме такива emojis* 1MoreDirect messagesAneliya Angelova, ...Vasil Vasilevда не пречат на процесването и отговораSteliyan GeorgievAdelina Petrova, Ili...Ro Adelina Petrova% Galya DimitrovaRs Nikolay Nikolov "2Galya Dimitrova, Ni...2Galya Dimitrova, Ni...Steliyan Georgiev 4:10 PMне сьм много сигурен какLukas Kovalik 5:41 PMсега ще го добавя това за disable on expired,после може да се тества по сьщия начинкато генериране сьс сьщата командаH1Newi: AppsNikolay Yankov 6:14 PMпушнах фикса за delete да маха реда отраблицатаJira Cloud+ToastMessage Aneliya Angelova, Nikolay Yankov, Steli...Google Cale...+(lol14Activity MonitorAll ProcessesProcess NameBoosteroidFirefoxCP Isolated Web ContentWindowServerFirefoxFirefoxFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)Notion Calendar Helper (Renderer)VTDecoderXPCServiceFirefox GPU HelperFirefox GPU HelperSlack Helper (Renderer)Notion Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentclaudeMEMORY PRESSUREMem...2,01 GB1,19 GB995,7 MB890,0 MB786,2 MB766,6 MB744,8 MB732,5 MB637,4 MB599,3 MB592,3 MB549,7 MB546,9 MB525,6 MB508,8 MB484,5 MB475,6 MB467,0 MB417,8 MB395,6 MB393,2 MB387,3 MB375,5 MB340,4 MB335,8 MB321,1 MB278,9 MB278,6 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <47Tue 14 Apr 19:13:50CPUMemoryDiskThreads382423817429252415112627152127232325232628242824232513EnergyPorts59612416 15494070812612612216 45617216623622917633312812011912312012312912312612512012372PID248351470040714664801460035848495004784226548248431467380192427311487087349623340701479150891133432824628931710951120232249278005091016,00 GB14,27 GB<1,67 GB2,72 GBApp Memory:Wired Memory:Compressed:NetworkUserlukaslukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,84 GB2,96 GB6,92 GB...
|
NULL
|
|
24448
|
531
|
25
|
2026-04-15T12:21:40.054045+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776255700054_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | [URL_WIT CaudeFileEditViewWindowHelp• Not Secure | [URL_WITH_CREDENTIALS] ~/.screenpipe $ ls~/.screenpipe/data/| head-20datapending-transcriptionsscreenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls~/.screenpipe/data/$(Is ~/.screenpipe/data/ | head -1)/ | head -302026-04-09'0A-04-1"Show moreRun a few more to complete the picture:bash# What's in one day's folder1s ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.Reply...+Sonnet 46 vclaude is Al and can make mistakes. rlease double-cneck responses....
|
NULL
|
-8715221607791122958
|
NULL
|
visual_change
|
ocr
|
NULL
|
CaudeFileEditViewWindowHelp• Not Secure | [URL_WIT CaudeFileEditViewWindowHelp• Not Secure | [URL_WITH_CREDENTIALS] ~/.screenpipe $ ls~/.screenpipe/data/| head-20datapending-transcriptionsscreenpipe.dblukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ ls~/.screenpipe/data/$(Is ~/.screenpipe/data/ | head -1)/ | head -302026-04-09'0A-04-1"Show moreRun a few more to complete the picture:bash# What's in one day's folder1s ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.Reply...+Sonnet 46 vclaude is Al and can make mistakes. rlease double-cneck responses....
|
24447
|
|
37754
|
776
|
49
|
2026-04-16T12:53:06.473729+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776343986473_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Technology TreeDravidiansInfantry and Naval civili Technology TreeDravidiansInfantry and Naval civilization• Fishermen and Fishing Ships carry +15• Receive +200 wood when advancing to the next Age• Skirmishers and Elephant Archers attack +25% faster• Barracks technologies cost -50%• Siege Weapons cost -33% woodUnique Units:Urumi Swordsman (Infantry), Thirisadai (Warship)Unique Techs:• Medical Corps (Elephant Units regenerate 30 HP perminute)• Wootz Steel (Infantry and Cavalry attacks ignore armor)Team Bonus:Docks provide +5 population spaceKeyUnitBuildingCommonRegionalUniqueNot AvailableUpgradeRequiredTechnologyBackDark AgeFeudal AgeCastle AgeImperial AgeArcherCrossbowmanArballesterSkirmisherFnteSkirmisherArcheryRangecavallyElephantHICHCIElite ElephantArchenThumbRingMilitiaMNIMIOASISLOD:Swordsmanwo-randedworasmanChampionBarracksJoCenRTNDikemanHa berdnerAUISOIGambesonssquiresJan ecoutCavalryLightCavalryRatr eElephantPaladin...
|
NULL
|
-8715066299334549079
|
NULL
|
click
|
ocr
|
NULL
|
Technology TreeDravidiansInfantry and Naval civili Technology TreeDravidiansInfantry and Naval civilization• Fishermen and Fishing Ships carry +15• Receive +200 wood when advancing to the next Age• Skirmishers and Elephant Archers attack +25% faster• Barracks technologies cost -50%• Siege Weapons cost -33% woodUnique Units:Urumi Swordsman (Infantry), Thirisadai (Warship)Unique Techs:• Medical Corps (Elephant Units regenerate 30 HP perminute)• Wootz Steel (Infantry and Cavalry attacks ignore armor)Team Bonus:Docks provide +5 population spaceKeyUnitBuildingCommonRegionalUniqueNot AvailableUpgradeRequiredTechnologyBackDark AgeFeudal AgeCastle AgeImperial AgeArcherCrossbowmanArballesterSkirmisherFnteSkirmisherArcheryRangecavallyElephantHICHCIElite ElephantArchenThumbRingMilitiaMNIMIOASISLOD:Swordsmanwo-randedworasmanChampionBarracksJoCenRTNDikemanHa berdnerAUISOIGambesonssquiresJan ecoutCavalryLightCavalryRatr eElephantPaladin...
|
37752
|
|
30726
|
621
|
55
|
2026-04-15T15:10:28.957797+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776265828957_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,04 GB1,21 GB1,01 GB963,1 MB854,9 MB826,2 MB794,5 MB547,7 MB544,2 MB543,9 MB515,8 MB500,9 MB479,1 MB422,6 MB406,1 MB398,7 MB395,1 MB392,4 MB372,6 MB342,9 MB333,2 MB326,3 MB326,1 MB304,0 MB276,8 MB268,7 MB240,2 MB202,9 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:10:28CPUMemoryDiskThreads4023722584282530261223152624252326221520131528282725EnergyPorts59819 8067241241 20112920 047128244250167120185125124125120124119172313722211261291833125124PID93892407801442974146644203084236713801914673938993548041863358313527643016368984365248173265481148509106051935833482984878561387429516,00 GB14,31 GB1,65 GB3,18 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,93 GB2,88 GB6,94 GB...
|
NULL
|
-8714282448504060358
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditEDHome1DMsActivityFilesLater..•More+ +SlackFileEditEDHome1DMsActivityFilesLater..•More+ViewGo→Jiminny ...+CHISHICCIITIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of _jimi...Direct messagesVasil VasilevAneliya Angelova, ...Stoyan TanevVesGalya DimitrovaR. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaR. Nikolay Nikolovii: AppsJira CloudToastHistoryWindowHelpSearch Jiminny Inc# releases8 226 0MessagesO Files• Bookmarks19-620201T 3 new messages+Tag:View JobGitHub APP 5:54 PM10 new commits pushed to master by yalokin-jiminny630fd8f9 - SRD-6779 |JY-20632 | Unableto log in to Sidekick with SSO0f38589b - SRD-6779 |JY-20632 | Add log4dd5718e - SRD-6779 |JY-20632 | minorimprovementb1e544db - SRD-6779 |JY-20632 | addtests8bd0ef70 - SRD-6779 |JY-20632 | addtestsShow more( jiminny/app Added by GitHubCircleCl APP5:56 PMDeployment Successful!Project:extension-appTag:When:04/15/202614:56:29View JobMessage #releases+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMEMORY PRESSUREMem...2,04 GB1,21 GB1,01 GB963,1 MB854,9 MB826,2 MB794,5 MB547,7 MB544,2 MB543,9 MB515,8 MB500,9 MB479,1 MB422,6 MB406,1 MB398,7 MB395,1 MB392,4 MB372,6 MB342,9 MB333,2 MB326,3 MB326,1 MB304,0 MB276,8 MB268,7 MB240,2 MB202,9 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:10:28CPUMemoryDiskThreads4023722584282530261223152624252326221520131528282725EnergyPorts59819 8067241241 20112920 047128244250167120185125124125120124119172313722211261291833125124PID93892407801442974146644203084236713801914673938993548041863358313527643016368984365248173265481148509106051935833482984878561387429516,00 GB14,31 GB1,65 GB3,18 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,93 GB2,88 GB6,94 GB...
|
30724
|
|
57779
|
1240
|
46
|
2026-04-20T12:05:41.197747+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776686741197_m1.jpg...
|
PhpStorm
|
PhpStorm
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PostmanFilelEdit|ViewWindowHelpmeet.google.com/cxs PostmanFilelEdit|ViewWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)FleEdit88® For you© Recent |# Starred8. Apps( SpacesStarred9) Service-DeskJiminny (Old)CID Processing TeamD SE Kanban|= More spaces= Filters(B DashboardsOperationsE2 Confiuence1: Teams3 Customise sidebarBookmarksTabHelpMon 20 Abr 15:052 PlattoJ-97 xQ Ask a# Font A X• Costi2 tuY-20 xF Projec x-2X Projec X© Simin© devue. xdev.ur4 DemoProjects3 SSн|→ Home | Salesforce3 CirclectSentry|×x 0Tksinsights & Coschin.• Dev• ux|Search+ CreateSpaces/ony DNew) / $ JY-19240 / [ Jy-20676Notify the user if a Panorama prompts is deleted but is used in AJ Report• DescriptionUsers might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating.• show this confirmation modal when a user is deleting a Panorama Prompts that is used in an active/enabled report -httos://www.fiama.com/desion/iXcletv9mx5Fiz8KoslAlin/Proiect-PhoenixPnode-id=15100-49503&tsnvw14PxTzaD.JSvBN-1Mor20Linked work itemsR JY-20615 Notify the user if a SS is deleted but is used in AJ Report |MACAOV8ActivityWork logAdd a comment.Who is working on this.?Status update…Thanks…Fouos pross t tocoameet.google.com is sharing your screen.Stop sharingAsk Rovo•1|Backlog~* Improve StoryDetailsAssignee8 UnassignedAssign to mebranch, commt, or puli requestDismissDevelopment@ Open with VS CodeLJ Create branchCreate commit |ComponentsPlatformSub-Product|Add optionsLabeisStory point est3:05 PM | [Platform] Refinement ®3:52100% 1Mon 20 /15:05:415Nikolay YankovNikolay IvanovNikolay NikolovLukas Kovalik...
|
NULL
|
-8714113968977453819
|
NULL
|
click
|
ocr
|
NULL
|
PostmanFilelEdit|ViewWindowHelpmeet.google.com/cxs PostmanFilelEdit|ViewWindowHelpmeet.google.com/cxs-eips-npt?authuser=0Nikolay Yankov (Presenting)FleEdit88® For you© Recent |# Starred8. Apps( SpacesStarred9) Service-DeskJiminny (Old)CID Processing TeamD SE Kanban|= More spaces= Filters(B DashboardsOperationsE2 Confiuence1: Teams3 Customise sidebarBookmarksTabHelpMon 20 Abr 15:052 PlattoJ-97 xQ Ask a# Font A X• Costi2 tuY-20 xF Projec x-2X Projec X© Simin© devue. xdev.ur4 DemoProjects3 SSн|→ Home | Salesforce3 CirclectSentry|×x 0Tksinsights & Coschin.• Dev• ux|Search+ CreateSpaces/ony DNew) / $ JY-19240 / [ Jy-20676Notify the user if a Panorama prompts is deleted but is used in AJ Report• DescriptionUsers might attempt to delete a Panorama Prompt which is used in AJ Report. When they do that we need to let them know that the report will stop generating.• show this confirmation modal when a user is deleting a Panorama Prompts that is used in an active/enabled report -httos://www.fiama.com/desion/iXcletv9mx5Fiz8KoslAlin/Proiect-PhoenixPnode-id=15100-49503&tsnvw14PxTzaD.JSvBN-1Mor20Linked work itemsR JY-20615 Notify the user if a SS is deleted but is used in AJ Report |MACAOV8ActivityWork logAdd a comment.Who is working on this.?Status update…Thanks…Fouos pross t tocoameet.google.com is sharing your screen.Stop sharingAsk Rovo•1|Backlog~* Improve StoryDetailsAssignee8 UnassignedAssign to mebranch, commt, or puli requestDismissDevelopment@ Open with VS CodeLJ Create branchCreate commit |ComponentsPlatformSub-Product|Add optionsLabeisStory point est3:05 PM | [Platform] Refinement ®3:52100% 1Mon 20 /15:05:415Nikolay YankovNikolay IvanovNikolay NikolovLukas Kovalik...
|
NULL
|
|
59688
|
1284
|
3
|
2026-04-20T13:56:38.718694+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776693398718_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox File Edit View•••@<→ CHistoryBookmarksP Firefox File Edit View•••@<→ CHistoryBookmarksProfiles ToolsWindow Help• • @ meet.google.com/cxs-eips-npt?authuser=0100% C42 Mon 20 Apr 16:56:38Returning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery good_ 114m 45s|4,25 GBLộ3• Feedback...
|
NULL
|
-8714034264571212304
|
NULL
|
visual_change
|
ocr
|
NULL
|
Firefox File Edit View•••@<→ CHistoryBookmarksP Firefox File Edit View•••@<→ CHistoryBookmarksProfiles ToolsWindow Help• • @ meet.google.com/cxs-eips-npt?authuser=0100% C42 Mon 20 Apr 16:56:38Returning to home screenYou left the meetingRejoinReturn to home screenHow was the audio and video?Very badVery good_ 114m 45s|4,25 GBLộ3• Feedback...
|
59687
|
|
21822
|
480
|
27
|
2026-04-15T10:21:14.000459+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776248474000_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
375495180200toFeudal Age--Feudal Age Research Comp 375495180200toFeudal Age--Feudal Age Research Complete-kovaliklukas advanced to the FeudalAge.Right-click to drop off resources at thisbuilding.1 kovaliklukas: 707/7076 Mindaugas: 681/6814 Siddhraj Jaisingh: 634/6345 Honorius: 626/6267 Basil the Macedonian: 618/6188 Ashikaga Takauji: 617/6173 Bird Jaguar: 616/6162 Anccu Hualloc: 580/580...
|
NULL
|
-8713974572812965431
|
NULL
|
click
|
ocr
|
NULL
|
375495180200toFeudal Age--Feudal Age Research Comp 375495180200toFeudal Age--Feudal Age Research Complete-kovaliklukas advanced to the FeudalAge.Right-click to drop off resources at thisbuilding.1 kovaliklukas: 707/7076 Mindaugas: 681/6814 Siddhraj Jaisingh: 634/6345 Honorius: 626/6267 Basil the Macedonian: 618/6188 Ashikaga Takauji: 617/6173 Bird Jaguar: 616/6162 Anccu Hualloc: 580/580...
|
21817
|
|
36103
|
733
|
83
|
2026-04-16T10:21:33.037329+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334893037_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMQ EKDashboarchExplorAcuvitySettingsTuccoomy onum camvaenReceived credentialskunning connection test tunctionoecrm, vo usersConnection successful›SecretsCredentialsC< 40 ll SupportDaily in1h39m A 100%C 8 Thu 16 Apr 13:21:32Ul CodeD TestM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender JiminnyNew Tab(7 Jiminnv© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: *( Fix an autocomplete mistake that sSymfony\Component|Debug\Excep] App "Zoho CRM" . Kavita • Membra+ New Tab@ AgentWhat would you like to do?beldDoCs &Connecior varametersInoutO Explore@ Actions8 Flows4 External Event Subscriptions4 Internal Event Subscriptions® Data Sources8 Field Mappingso Internal Data SchemasData Link Tables• System Activity% Flow Runs• Action RunsAPI External API Logs¿ External wednooks4 External EventsE External Event Pulls• Internal Events50 >15 >1 >0 >12 >11 >0 >Last 7 days v0 >34 • >42 • >0 >0 >0 >LogoutVersion2026-04-16...
|
NULL
|
-8713920612825532648
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMQ EKDashboarchExplorAcuvitySettingsTuccoomy onum camvaenReceived credentialskunning connection test tunctionoecrm, vo usersConnection successful›SecretsCredentialsC< 40 ll SupportDaily in1h39m A 100%C 8 Thu 16 Apr 13:21:32Ul CodeD TestM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender JiminnyNew Tab(7 Jiminnv© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: *( Fix an autocomplete mistake that sSymfony\Component|Debug\Excep] App "Zoho CRM" . Kavita • Membra+ New Tab@ AgentWhat would you like to do?beldDoCs &Connecior varametersInoutO Explore@ Actions8 Flows4 External Event Subscriptions4 Internal Event Subscriptions® Data Sources8 Field Mappingso Internal Data SchemasData Link Tables• System Activity% Flow Runs• Action RunsAPI External API Logs¿ External wednooks4 External EventsE External Event Pulls• Internal Events50 >15 >1 >0 >12 >11 >0 >Last 7 days v0 >34 • >42 • >0 >0 >0 >LogoutVersion2026-04-16...
|
36102
|
|
50399
|
1078
|
52
|
2026-04-17T14:47:12.538544+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776437232538_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
CodeFileEditSelectionViewRunTerminalWindowHelp< CodeFileEditSelectionViewRunTerminalWindowHelp< → Search• Restricted Mode is intended for safe code browsing. Trust this window to enable all features.ManaeeLearn moresscreenoipe svnc.sheusers / lukas ,2492534042564oy260261262263265270screenpipe > $ screenpipe_sync.shINITOnasrelenenus Tust rowlr text rolerJoiy nasatranes T on entrane 1o = 1heWHERE date(f.timestamp) = '$TARGET_DATE'AND e.text IS NOT NULLDETACH nas;run_sqlite_heredoc "frames_fts" "AITACH SNAS DD AS nas-INSERT INTO nas-frames_fts(rowid, full_text, app_name, window_name, browser_url)SELECT id,Tuct cext,dpp lale,wendow name,browserurlFROM nas. framecWHERE date(timestamp) = '$TARGET_DATE'AND tull text is NOT NULLADETACH nas;# VERIFY Estep "Verifying"V FRAMES=$(salite3"SNAS DE "OCLEL COUNTkor Traneswntke care tnestanoV_ELEMENTS=$(sqlite3= '$TARGET_DATE' ;")"SNAS_DB" "SELECT COUNT(*)FROM elementsWHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = 'STARGET_DATE') ;")vul-sisolrtes"SNAS_DB" "SELECT COUNT(*)Tkom uL events Wickc daterctmestamo)= '$TARGET_DATE';")V OCR=$(sqlite3V_MEETINGS=$(sqlite3"SNAS DB" "SELECT COUNT(*)FROM ocr_textWHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE'); ")"SNAS_DB" "SELECT COUNT(*) FROM meetingsWHERE date(meeting_start)='$TARGET _DATE' , ")check() {Local label="$1" got="$2" expected="$3"if [ "$got" -eq "$expected" ]; thenprintf%-20s %s / %5E\n" "$label:" "$got" "$expected"elseprintf "%-20s %S / %5 & MISMATCH\n" "$label:" "$got" "$expected"check "frames"check "elements""SV_FRAMES""$SRC FRAMES""$V_ELEMENTS" "$SRC_ELEMENTS"check "ul events""SWOiMOSRIE UDI""SV_OCR""$SRC_OCR"check "meetings'"SV_MEETINGS" "$SRC_MEETINGS"TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))DB SIWF=cidu -sh"SNAS_DB" cut -f1)echo "*Log "Archive DB size:$DB_SIZE"loa "Total time:$(( TOTAL_ELAPSED / 60 ))m$( ( TOTAL_ELAPSED $ 60 )) 5"log "Sync complete for STARGET_DATE"Log "=Sô3DOД0libdA100% CS•Fri 17 Apr 17:47:1208> logAa ab." 7 of18DOMTR MEВ-НITS: IIDEдокаяIEIELE® You have Docker installed on your system. Do you want toгosXinstall the recommended extensions from Microsoft for it?Show RecommendationsLn 135, Col 10 (515 selected)Spaces: 2() Shell Script...
|
NULL
|
-8713756871243185081
|
NULL
|
click
|
ocr
|
NULL
|
CodeFileEditSelectionViewRunTerminalWindowHelp< CodeFileEditSelectionViewRunTerminalWindowHelp< → Search• Restricted Mode is intended for safe code browsing. Trust this window to enable all features.ManaeeLearn moresscreenoipe svnc.sheusers / lukas ,2492534042564oy260261262263265270screenpipe > $ screenpipe_sync.shINITOnasrelenenus Tust rowlr text rolerJoiy nasatranes T on entrane 1o = 1heWHERE date(f.timestamp) = '$TARGET_DATE'AND e.text IS NOT NULLDETACH nas;run_sqlite_heredoc "frames_fts" "AITACH SNAS DD AS nas-INSERT INTO nas-frames_fts(rowid, full_text, app_name, window_name, browser_url)SELECT id,Tuct cext,dpp lale,wendow name,browserurlFROM nas. framecWHERE date(timestamp) = '$TARGET_DATE'AND tull text is NOT NULLADETACH nas;# VERIFY Estep "Verifying"V FRAMES=$(salite3"SNAS DE "OCLEL COUNTkor Traneswntke care tnestanoV_ELEMENTS=$(sqlite3= '$TARGET_DATE' ;")"SNAS_DB" "SELECT COUNT(*)FROM elementsWHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = 'STARGET_DATE') ;")vul-sisolrtes"SNAS_DB" "SELECT COUNT(*)Tkom uL events Wickc daterctmestamo)= '$TARGET_DATE';")V OCR=$(sqlite3V_MEETINGS=$(sqlite3"SNAS DB" "SELECT COUNT(*)FROM ocr_textWHERE frame_id IN (SELECT id FROM frames WHERE date(timestamp) = '$TARGET_DATE'); ")"SNAS_DB" "SELECT COUNT(*) FROM meetingsWHERE date(meeting_start)='$TARGET _DATE' , ")check() {Local label="$1" got="$2" expected="$3"if [ "$got" -eq "$expected" ]; thenprintf%-20s %s / %5E\n" "$label:" "$got" "$expected"elseprintf "%-20s %S / %5 & MISMATCH\n" "$label:" "$got" "$expected"check "frames"check "elements""SV_FRAMES""$SRC FRAMES""$V_ELEMENTS" "$SRC_ELEMENTS"check "ul events""SWOiMOSRIE UDI""SV_OCR""$SRC_OCR"check "meetings'"SV_MEETINGS" "$SRC_MEETINGS"TOTAL_ELAPSED=$(( $(date +%s) - SCRIPT_START ))DB SIWF=cidu -sh"SNAS_DB" cut -f1)echo "*Log "Archive DB size:$DB_SIZE"loa "Total time:$(( TOTAL_ELAPSED / 60 ))m$( ( TOTAL_ELAPSED $ 60 )) 5"log "Sync complete for STARGET_DATE"Log "=Sô3DOД0libdA100% CS•Fri 17 Apr 17:47:1208> logAa ab." 7 of18DOMTR MEВ-НITS: IIDEдокаяIEIELE® You have Docker installed on your system. Do you want toгosXinstall the recommended extensions from Microsoft for it?Show RecommendationsLn 135, Col 10 (515 selected)Spaces: 2() Shell Script...
|
50397
|
|
73539
|
1815
|
14
|
2026-04-23T07:53:48.034890+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776930828034_m2.jpg...
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
111
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
): void
{
$user = User::find(143);
$count$automatedReportsRepository->countUserReports($user);
exit(1);
$now = Carbon::now()->subDay(5);
$from = $now->copy()->previousWeekday()->startOfDay();
$to = $now->copy()->previousWeekday()->endOfDay();
$this->info("Now: {$now->toDateTimeString()}");
$this->info("From: {$from->toDateTimeString()}");
$this->info("To: {$to->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
36
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Component\DealInsights;
use Doctrine\DBAL\Connection;
use Generator;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Jiminny\Component\DealInsights\Forecast\DealData;
use Jiminny\Component\DealInsights\Forecast\DealsFilter;
use Jiminny\Component\DealInsights\QueryBuilder\QueryBuilder;
use Jiminny\Component\DealInsights\QueryBuilder\Visitor\QueryBuilderVisitorInterface;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Models;
use Jiminny\Services\Crm\IntegrationApp\DTO\Utils\UrlGeneratorInterface;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Traits\RequiresUUID;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Eloquent;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class DealsRepository implements DealsRepositoryInterface
{
private Connection $connection;
private ProviderRegistry $providerRegistry;
/**
* @var QueryBuilderVisitorInterface[]
*/
private array $visitors = [];
/**
* @param QueryBuilderVisitorInterface[] $visitors
*/
public function __construct(Connection $connection, ProviderRegistry $crmProviderRegistry, array $visitors = [])
{
$this->connection = $connection;
$this->providerRegistry = $crmProviderRegistry;
foreach ($visitors as $visitor) {
$this->visitors[$visitor->getIdentifier()] = $visitor;
}
}
public function getDeals(CriteriaInterface $criteria): array
{
$context = $criteria->getContext();
$team = $context->getTeam();
$crmService = $this->getCrmService($team);
$qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);
$qb = $this->getSearchSelectAndWhereClauses($qb);
$this->visit($qb, $criteria);
return $this->execute($team, $crmService, $qb);
}
public function getDeal(Team $team, int $id): array
{
$crmService = $this->getCrmService($team);
$qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);
$qb = $this->getSearchSelectAndWhereClauses($qb);
$qb->andWhere('opp.id = :id')->setParameter('id', $id);
return $this->execute($team, $crmService, $qb);
}
public function getCrmFieldData(array $crmFields, int $crmId, array $opportunityIds = [])
{
$qb = new QueryBuilder($this->connection);
$qb
->select('f.id', 'f.crm_provider_id AS field_name', 'f.label', 'fd.object_id AS dealId', 'fd.value')
->from('crm_fields', 'f')
->join('f', 'crm_field_data', 'fd', 'fd.crm_field_id = f.id')
->where('f.crm_configuration_id = :crm')
->andWhere('f.object_type = :type')
->andWhere('fd.object_id IN (' . implode(',', $opportunityIds) . ')')
->orderBy('fd.object_id', 'ASC')
->addOrderBy('fd.updated_at', 'ASC')
->setParameter('type', Field::OBJECT_OPPORTUNITY)
->setParameter('crm', $crmId)
;
if (! empty($crmFields)) {
$fields = array_map(fn ($value): string => '"' . $value . '"', $crmFields);
$qb->andWhere('f.crm_provider_id IN (' . implode(',', $fields) . ')');
}
return $qb->executeQuery()->fetchAllAssociative();
}
public function getTotalsInDefaultCurrency(CriteriaInterface $criteria): array
{
$qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);
$qb
->select('SUM(opp.value) as total')
->addSelect('count(*) as `count`')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'))
;
$this->visit($qb, $criteria);
return $qb->executeQuery()->fetchAssociative();
}
public function getTotals(CriteriaInterface $criteria, string $defaultCurrency): array
{
$qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);
$qb
->select('COALESCE(opp.currency_code, "' . $defaultCurrency . '") AS currency')
->addSelect('SUM(opp.value) as total')
->addSelect('count(*) as `count`')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'))
->groupBy('currency')
;
$this->visit($qb, $criteria);
return $qb->executeQuery()->fetchAllAssociative();
}
public function getDealActivities(CriteriaInterface $criteria): array
{
$qb = Activity::with(['participants', 'user'])
->where('opportunity_id', $criteria->getOpportunityId())
->whereDate('actual_start_time', '>=', $criteria->getPeriod()->getStartDate())
->whereDate('actual_start_time', '<=', $criteria->getPeriod()->getEndDate())
->orderBy($criteria->getSortBy(), $criteria->getSortDirection())
;
// Should we filter activities by criteria? It's intended to filter deals.
return $qb->get()->all();
}
public function getStages(CriteriaInterface $criteria): array
{
$qb = new QueryBuilder($this->connection);
$qb
->select('id', 'label', 'sequence')
->from('stages', 's')
->where('crm_configuration_id = :crm_configuration_id')
->andWhere('type = :type')
->orderBy('sequence', 'ASC')
->setParameter('crm_configuration_id', $criteria->getContext()->getTeam()->getCrmConfiguration()->getId())
->setParameter('type', Stage::TYPE_OPPORTUNITY);
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$result[$row['id']] = [
'label' => $row['label'],
'sequence' => $row['sequence'],
];
}
return $result;
}
public function getConfigurationStages(Configuration $configuration): Collection
{
return $configuration
->stages()
->where('type', Stage::TYPE_OPPORTUNITY)
->get();
}
public function getPipelineData(Configuration $crm): array
{
$qb = new QueryBuilder($this->connection);
$provider = $crm->provider;
$qb
->select('s.label', 's.crm_provider_id', 's.sequence', 'bps.business_process_id AS pipeline_id')
->from('stages', 's')
->join('s', 'business_process_stages', 'bps', 's.id=bps.stage_id')
->where('s.crm_configuration_id = :crm_configuration_id')
->andWhere('s.type = :type')
->orderBy('bps.business_process_id', 'ASC')
->addOrderBy('s.sequence', 'ASC')
->setParameter('crm_configuration_id', $crm->id)
->setParameter('type', Stage::TYPE_OPPORTUNITY)
;
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$value = $provider === Configuration::PROVIDER_SALESFORCE ? $row['label'] : $row['crm_provider_id'];
$result[$row['pipeline_id']][] = [
'value' => $value,
'label' => $row['label'],
'sequence' => $row['sequence'],
];
}
return $result;
}
private function createQueryBuilder(string $realm): QueryBuilder
{
return (new QueryBuilder($this->connection))
->setRealm($realm)
->from('opportunities', 'opp')
->leftJoin('opp', 'record_types', 'rt', 'opp.record_type_id = rt.id')
->leftJoin('opp', 'users', 'usr', 'opp.user_id = usr.id')
->leftJoin('opp', 'accounts', 'acc', 'opp.account_id = acc.id')
;
}
/**
* Applies all applicable visitors and returns the IDs of the executed ones
*
* @return string[]
*/
private function visit(QueryBuilder $queryBuilder, CriteriaInterface $criteria): array
{
$queryVisitors = [];
foreach ($this->visitors as $visitor) {
if ($visitor->isSatisfiedBy($criteria, $queryBuilder->getRealm())) {
$visitor->visit($queryBuilder, $criteria);
$queryVisitors[] = $visitor->getIdentifier();
}
}
return $queryVisitors;
}
private function hydrateStages(array $deals): array
{
foreach ($this->fetchStages(array_keys($deals)) as $stage) {
$oppId = (int) $stage['opportunity_id'];
if (! isset($deals[$oppId])) {
continue; // or throw??!
}
$deals[$oppId]['stages'][] = [
'id' => $stage['stage_id'],
'name' => $stage['label'],
'enteredAt' => $stage['created_at'],
];
}
return $deals;
}
/**
* @param int[] $dealIds
*/
private function fetchStages(array $dealIds): array
{
if (empty($dealIds)) {
return [];
}
$qb = new QueryBuilder($this->connection);
$qb
->select('os.opportunity_id', 's.id AS stage_id', 's.label', 's.created_at')
->from('opportunity_stages', 'os')
->leftJoin('os', 'stages', 's', 'os.stage_id=s.id')
->where($qb->expr()->in('os.opportunity_id', $dealIds))
->orderBy('os.opportunity_id', 'ASC')
->addOrderBy('s.created_at', 'ASC')
;
return $qb->executeQuery()->fetchAllAssociative();
}
private function execute(Team $team, ServiceInterface $crmService, QueryBuilder $qb): array
{
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$data = [
'uuid' => RequiresUUID::toNormal($row['uuid']),
'name' => $row['name'],
'url' => $crmService->generateProviderUrl($row['opp_provider_id'], 'opportunity'),
'account' => [
'name' => $row['acc_name'],
'url' => $crmService->generateProviderUrl(
providerId: $row['acc_provider_id'],
objectType: $row['acc_is_internal'] ? 'internal-account' : 'account'
),
],
'owner' => null,
'rawValue' => [
'amount' => (float) $row['value'],
'currency' => $row['currency_code'],
],
'value' => formatOpportunityValue((float) $row['value'], $row['currency_code']),
'openDate' => $row['remotely_created_at'] ?? null,
'closeDate' => $row['close_date'] ?? null,
'stages' => [],
'currentPipelineId' => $row['pipeline_id'],
'currentStage' => [
'id' => $row['stage_id'],
'enteredAt' => $row['stage_updated_at'],
],
'currentStageUpdatedAt' => $row['stage_updated_at'],
'isClosed' => (bool) $row['is_closed'],
'isWon' => (bool) $row['is_won'],
];
if (isset($row['owner_uuid'])) {
$data['owner'] = [
'uuid' => RequiresUUID::toNormal($row['owner_uuid']),
'name' => $row['owner_name'],
'photoUrl' => $row['owner_photo'] === null
? null
: client_cdn($row['owner_photo'], $team),
'id' => $row['owner_id'],
'job' => $row['owner_job'],
];
}
$result[(int) $row['opp_id']] = $data;
}
return $this->hydrateStages($result);
}
private function getSearchSelectAndWhereClauses(QueryBuilder $queryBuilder): QueryBuilder
{
$qb = clone $queryBuilder;
$qb->leftJoin('usr', 'job_titles', 'jt', 'usr.job_title_id = jt.id');
$qb
->select(...[
'opp.id as opp_id',
'opp.uuid',
'opp.name',
'opp.value',
'opp.currency_code',
'opp.close_date',
'opp.remotely_created_at',
'opp.is_closed',
'opp.is_won',
])
->addSelect(...[
'usr.uuid as owner_uuid',
'usr.name AS owner_name',
'usr.photo_path as owner_photo',
'usr.id AS owner_id',
'jt.name as owner_job',
])
->addSelect('opp.stage_id', 'opp.stage_updated_at')
->addSelect(...[
'acc.name AS acc_name',
'acc.is_internal as acc_is_internal',
'opp.stage_updated_at',
'acc.crm_provider_id AS acc_provider_id',
'opp.crm_provider_id AS opp_provider_id',
])
->addSelect('rt.business_process_id AS pipeline_id')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not display deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'));
return $qb;
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws SocialAccountTokenInvalidException
*/
private function getCrmService(Team $team): ServiceInterface
{
$crmService = $this->providerRegistry->get($team->crm->provider);
$crmService->setConfiguration($team->crm);
if ($crmService instanceof UrlGeneratorInterface) {
$crmService->setCrmUrlGenerator($team->crm);
}
return $crmService;
}
/**
*
* @return Generator<DealData>
*/
public function getForecastData(DealsFilter $filter): Generator
{
$opportunities = DB::query()
->select([
'o.value',
'o.close_date',
'o.currency_code',
'o.is_won',
'o.is_closed',
'o.probability',
'o.forecast_category',
])
->from('opportunities', 'o')
->join('users', 'users.id', '=', 'o.user_id')
->join('groups', 'groups.id', '=', 'users.group_id')
->where('users.team_id', $filter->getTeam()->getId())
->where('o.close_date', '>=', $filter->getStartDate())
->where('o.close_date', '<=', $filter->getEndDate())
->where('o.currency_code', $filter->getCurrency())
->where('o.deleted_at', '=', null)
;
$userUuidList = $filter->getUserUuidList();
if (! empty($userUuidList)) {
$userUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $userUuidList);
$opportunities->whereIn('users.uuid', $userUuidList);
}
$groupUuidList = $filter->getGroupUuidList();
if (! empty($groupUuidList)) {
$groupUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $groupUuidList);
$opportunities->whereIn('groups.uuid', $groupUuidList);
}
foreach ($opportunities->cursor() as $row) {
yield new DealData(
(float) $row->value,
$row->close_date,
! empty($row->is_won),
! empty($row->is_closed),
$row->probability ?: 0,
$row->forecast_category ?: '',
);
}
}
public function getUserOpportunitySubscriptions(User $user, array $opportunityIds): Collection
{
return $user->subscriptionSets()
->where(static function (Eloquent\Builder $query): void {
$query
->whereNull('expired_at')
->orWhere('expired_at', '>=', now());
})
->join('activity_subscriptions', function (Builder $join) use ($opportunityIds) {
$join
->on('subscription_set_id', '=', 'activity_subscription_sets.id');
$join
->where('followable_type', Models\Activity\Subscription::FOLLOWABLE_TYPE_OPPORTUNITY)
->whereIn('followable_id', $opportunityIds);
})
->pluck('followable_id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.25731382,"top":0.019952115,"width":0.03856383,"height":0.025538707},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20157-AJ-report-not-send-notification, menu","depth":5,"bounds":{"left":0.29587767,"top":0.019952115,"width":0.10139628,"height":0.025538707},"help_text":"Git Branch: JY-20157-AJ-report-not-send-notification","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.7972075,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"RequestGenerateAskJiminnyReportJobTest","depth":6,"bounds":{"left":0.8125,"top":0.019952115,"width":0.10305851,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'RequestGenerateAskJiminnyReportJobTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96609044,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9773936,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9886968,"top":0.019952115,"width":0.011303186,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.60106385,"top":0.17478053,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"111","depth":4,"bounds":{"left":0.61103725,"top":0.17478053,"width":0.010638298,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.6236702,"top":0.17478053,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.63331115,"top":0.17318435,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.640625,"top":0.17318435,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n ): void\n {\n $user = User::find(143);\n $count$automatedReportsRepository->countUserReports($user);\n \n \n exit(1);\n \n $now = Carbon::now()->subDay(5);\n $from = $now->copy()->previousWeekday()->startOfDay();\n $to = $now->copy()->previousWeekday()->endOfDay();\n\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $this->info(\"From: {$from->toDateTimeString()}\");\n $this->info(\"To: {$to->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Console\\Commands;\n\nuse Carbon\\Carbon;\nuse Illuminate\\Console\\Command;\nuse InvalidArgumentException;\nuse Jiminny\\Jobs\\AutomatedReports\\RequestGenerateAskJiminnyReportJob;\nuse Jiminny\\Jobs\\AutomatedReports\\SendReportMailJob;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\AutomatedReportsRepository;\nuse Jiminny\\Services\\Activity\\CrmOwnerResolver;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\n\n/**\n * Class JiminnyDebugCommand\n *\n * @package Jiminny\\Console\\Commands\n */\nclass JiminnyDebugCommand extends Command\n{\n public const string FREQUENCY_DAILY = 'daily';\n public const string FREQUENCY_WEEKLY = 'weekly';\n public const string FREQUENCY_MONTHLY = 'monthly';\n public const string FREQUENCY_QUARTERLY = 'quarterly';\n public const string FREQUENCY_ONE_OFF = 'one_off';\n protected $signature = 'jiminny:debug';\n\n public function handle(\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService,\n AutomatedReportsRepository $automatedReportsRepository,\n ): void\n {\n $user = User::find(143);\n $count$automatedReportsRepository->countUserReports($user);\n \n \n exit(1);\n \n $now = Carbon::now()->subDay(5);\n $from = $now->copy()->previousWeekday()->startOfDay();\n $to = $now->copy()->previousWeekday()->endOfDay();\n\n $this->info(\"Now: {$now->toDateTimeString()}\");\n $this->info(\"From: {$from->toDateTimeString()}\");\n $this->info(\"To: {$to->toDateTimeString()}\");\n\n exit(1);\n\n $report = AutomatedReport::find(71);\n\n $job = new RequestGenerateAskJiminnyReportJob($report->getUuid());\n $jobDispatcher->dispatch($job);\n\n exit(1);\n\n\n // $this->formatDate($jobDispatcher);\n // $this->sendMail($jobDispatcher, $automatedReportsService);\n // $this->crmService();\n\n $this->getPayload($automatedReportsService);\n\n exit(1);\n }\n\n\n\n private function crmService()\n {\n $activity = Activity::find(418141);\n\n $team = Team::find(19);\n $config = $team->getCrmConfiguration();\n\n $crmResolver = app(CrmOwnerResolver::class, [\n 'team' => $team,\n 'integrationAdmin' => $team->getOwner(),\n 'providerSlug' => $config->getProviderName(),\n ]);\n\n $crmService = $crmResolver->prepareCrmService();\n\n $crmService->createTranscriptNotes($activity);\n }\n\n private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)\n {\n $reportUuid = '';\n // $report = $automatedReportsService->getReportResult($reportUuid);\n $report = AutomatedReportResult::find(275);\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n $recipient = $validRecipients[0];\n\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));\n\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $report->getUuid(),\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: true,\n )\n );\n\n exit(1);\n }\n\n private function formatDate(JobDispatcherInterface $jobDispatcher): void\n {\n $customName = 'Custom report name';\n // $frequency = self::FREQUENCY_DAILY;\n // $frequency = self::FREQUENCY_WEEKLY;\n $frequency = self::FREQUENCY_MONTHLY;\n // $frequency = self::FREQUENCY_QUARTERLY;\n // $frequency = self::FREQUENCY_ONE_OFF;\n $period = $this->calculateFromAndToDatePeriod($frequency);\n $from = $period['fromDate'];\n $to = $period['toDate'];\n $periodName = $this->formatReportPeriodName($frequency, $from, $to);\n $filenameSuffix = null;\n\n if ($customName) {\n if ($filenameSuffix) {\n $customName .= \" {$filenameSuffix}\";\n }\n\n $result = $this->sanitizeFileName(\"{$customName} - {$periodName}\");\n }\n\n $this->info($result);\n }\n\n public function calculateFromAndToDatePeriod(\n string $frequency,\n ?Carbon $fromDate = null,\n ?Carbon $toDate = null\n ): array {\n if ($frequency === self::FREQUENCY_ONE_OFF) {\n return [\n 'fromDate' => $fromDate,\n 'toDate' => $toDate,\n ];\n }\n\n $now = Carbon::now();\n\n return match ($frequency) {\n self::FREQUENCY_DAILY => [\n 'fromDate' => $now->copy()->subDay()->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_WEEKLY => [\n 'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_MONTHLY => [\n 'fromDate' => $now->copy()->subMonths(1)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n self::FREQUENCY_QUARTERLY => [\n 'fromDate' => $now->copy()->subMonths(3)->startOfDay(),\n 'toDate' => $now->copy()->subDay()->endOfDay(),\n ],\n default => throw new InvalidArgumentException(\"Unsupported frequency: {$frequency}\"),\n };\n }\n\n private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string\n {\n $fromYear = $from->format('Y');\n $toYear = $to->format('Y');\n $differentYears = $fromYear !== $toYear;\n\n switch ($frequency) {\n case self::FREQUENCY_DAILY:\n return $from->format('j M Y');\n\n case self::FREQUENCY_QUARTERLY:\n // 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ\n $startMonth = $from->format('M');\n $endMonth = $to->copy()->subMonth();\n $endMonthName = $endMonth->format('M');\n $endMonthYear = $endMonth->format('Y');\n\n if ($differentYears) {\n return \"{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}\";\n }\n\n return \"{$startMonth} - {$endMonthName} {$toYear}\";\n\n case self::FREQUENCY_MONTHLY:\n // 'May 2025' - monthly reports are always within the same year\n return $from->format('M Y');\n\n case self::FREQUENCY_WEEKLY:\n // '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ\n $startDay = $from->format('j');\n $endDay = $to->format('j');\n $startMonth = $from->format('M');\n $endMonth = $to->format('M');\n\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n if ($startMonth !== $endMonth) {\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n return \"{$startDay} - {$endDay} {$endMonth} {$toYear}\";\n\n case self::FREQUENCY_ONE_OFF:\n // '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ\n $startDay = $from->format('j');\n $startMonth = $from->format('M');\n $endDay = $to->format('j');\n $endMonth = $to->format('M');\n\n // If same month and year, use a format like '2-31 May 2025'\n if ($startMonth === $endMonth && ! $differentYears) {\n return \"{$startDay} - {$endDay} {$startMonth} {$toYear}\";\n }\n\n // If different years, include both years\n if ($differentYears) {\n return \"{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}\";\n }\n\n // Same year but different months\n return \"{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}\";\n\n default:\n // Default format for unknown frequencies\n return $from->format('j M Y') . ' - ' . $to->format('j M Y');\n }\n }\n\n public function sanitizeFileName(string $fileName): string\n {\n return str_replace(['/', '\\\\'], '-', $fileName);\n }\n\n private function getPayload(AutomatedReportsService $automatedReportsService)\n {\n $reportResult = AutomatedReportResult::find(269);\n $automatedReport = $reportResult->getReport();\n $activityIds = [1,2,3];\n $payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(\n automatedReport: $automatedReport,\n reportResult: $reportResult,\n activityIds: $activityIds,\n );\n\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"36","depth":4,"bounds":{"left":0.69980055,"top":0.2490024,"width":0.010305851,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7117686,"top":0.24740623,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.7190825,"top":0.24740623,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Component\\DealInsights;\n\nuse Doctrine\\DBAL\\Connection;\nuse Generator;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Component\\DealInsights\\Forecast\\DealData;\nuse Jiminny\\Component\\DealInsights\\Forecast\\DealsFilter;\nuse Jiminny\\Component\\DealInsights\\QueryBuilder\\QueryBuilder;\nuse Jiminny\\Component\\DealInsights\\QueryBuilder\\Visitor\\QueryBuilderVisitorInterface;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\DTO\\Utils\\UrlGeneratorInterface;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Illuminate\\Database\\Query\\Builder;\nuse Illuminate\\Database\\Eloquent;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\n\nclass DealsRepository implements DealsRepositoryInterface\n{\n private Connection $connection;\n\n private ProviderRegistry $providerRegistry;\n\n /**\n * @var QueryBuilderVisitorInterface[]\n */\n private array $visitors = [];\n\n /**\n * @param QueryBuilderVisitorInterface[] $visitors\n */\n public function __construct(Connection $connection, ProviderRegistry $crmProviderRegistry, array $visitors = [])\n {\n $this->connection = $connection;\n $this->providerRegistry = $crmProviderRegistry;\n\n foreach ($visitors as $visitor) {\n $this->visitors[$visitor->getIdentifier()] = $visitor;\n }\n }\n\n public function getDeals(CriteriaInterface $criteria): array\n {\n $context = $criteria->getContext();\n $team = $context->getTeam();\n $crmService = $this->getCrmService($team);\n\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);\n $qb = $this->getSearchSelectAndWhereClauses($qb);\n\n $this->visit($qb, $criteria);\n\n return $this->execute($team, $crmService, $qb);\n }\n\n public function getDeal(Team $team, int $id): array\n {\n $crmService = $this->getCrmService($team);\n\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);\n $qb = $this->getSearchSelectAndWhereClauses($qb);\n $qb->andWhere('opp.id = :id')->setParameter('id', $id);\n\n return $this->execute($team, $crmService, $qb);\n }\n\n public function getCrmFieldData(array $crmFields, int $crmId, array $opportunityIds = [])\n {\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('f.id', 'f.crm_provider_id AS field_name', 'f.label', 'fd.object_id AS dealId', 'fd.value')\n ->from('crm_fields', 'f')\n ->join('f', 'crm_field_data', 'fd', 'fd.crm_field_id = f.id')\n ->where('f.crm_configuration_id = :crm')\n ->andWhere('f.object_type = :type')\n ->andWhere('fd.object_id IN (' . implode(',', $opportunityIds) . ')')\n ->orderBy('fd.object_id', 'ASC')\n ->addOrderBy('fd.updated_at', 'ASC')\n\n ->setParameter('type', Field::OBJECT_OPPORTUNITY)\n ->setParameter('crm', $crmId)\n ;\n\n if (! empty($crmFields)) {\n $fields = array_map(fn ($value): string => '\"' . $value . '\"', $crmFields);\n $qb->andWhere('f.crm_provider_id IN (' . implode(',', $fields) . ')');\n }\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n public function getTotalsInDefaultCurrency(CriteriaInterface $criteria): array\n {\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);\n\n $qb\n ->select('SUM(opp.value) as total')\n ->addSelect('count(*) as `count`')\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'))\n ;\n\n $this->visit($qb, $criteria);\n\n return $qb->executeQuery()->fetchAssociative();\n }\n\n public function getTotals(CriteriaInterface $criteria, string $defaultCurrency): array\n {\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);\n\n $qb\n ->select('COALESCE(opp.currency_code, \"' . $defaultCurrency . '\") AS currency')\n ->addSelect('SUM(opp.value) as total')\n ->addSelect('count(*) as `count`')\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'))\n ->groupBy('currency')\n ;\n\n $this->visit($qb, $criteria);\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n public function getDealActivities(CriteriaInterface $criteria): array\n {\n $qb = Activity::with(['participants', 'user'])\n ->where('opportunity_id', $criteria->getOpportunityId())\n ->whereDate('actual_start_time', '>=', $criteria->getPeriod()->getStartDate())\n ->whereDate('actual_start_time', '<=', $criteria->getPeriod()->getEndDate())\n ->orderBy($criteria->getSortBy(), $criteria->getSortDirection())\n ;\n\n // Should we filter activities by criteria? It's intended to filter deals.\n\n return $qb->get()->all();\n }\n\n public function getStages(CriteriaInterface $criteria): array\n {\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('id', 'label', 'sequence')\n ->from('stages', 's')\n ->where('crm_configuration_id = :crm_configuration_id')\n ->andWhere('type = :type')\n ->orderBy('sequence', 'ASC')\n\n ->setParameter('crm_configuration_id', $criteria->getContext()->getTeam()->getCrmConfiguration()->getId())\n ->setParameter('type', Stage::TYPE_OPPORTUNITY);\n\n $result = [];\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $result[$row['id']] = [\n 'label' => $row['label'],\n 'sequence' => $row['sequence'],\n ];\n }\n\n return $result;\n }\n\n public function getConfigurationStages(Configuration $configuration): Collection\n {\n return $configuration\n ->stages()\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->get();\n }\n\n public function getPipelineData(Configuration $crm): array\n {\n $qb = new QueryBuilder($this->connection);\n $provider = $crm->provider;\n\n $qb\n ->select('s.label', 's.crm_provider_id', 's.sequence', 'bps.business_process_id AS pipeline_id')\n ->from('stages', 's')\n ->join('s', 'business_process_stages', 'bps', 's.id=bps.stage_id')\n ->where('s.crm_configuration_id = :crm_configuration_id')\n ->andWhere('s.type = :type')\n ->orderBy('bps.business_process_id', 'ASC')\n ->addOrderBy('s.sequence', 'ASC')\n\n ->setParameter('crm_configuration_id', $crm->id)\n ->setParameter('type', Stage::TYPE_OPPORTUNITY)\n ;\n\n $result = [];\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $value = $provider === Configuration::PROVIDER_SALESFORCE ? $row['label'] : $row['crm_provider_id'];\n $result[$row['pipeline_id']][] = [\n 'value' => $value,\n 'label' => $row['label'],\n 'sequence' => $row['sequence'],\n ];\n }\n\n return $result;\n }\n\n private function createQueryBuilder(string $realm): QueryBuilder\n {\n return (new QueryBuilder($this->connection))\n ->setRealm($realm)\n ->from('opportunities', 'opp')\n ->leftJoin('opp', 'record_types', 'rt', 'opp.record_type_id = rt.id')\n ->leftJoin('opp', 'users', 'usr', 'opp.user_id = usr.id')\n ->leftJoin('opp', 'accounts', 'acc', 'opp.account_id = acc.id')\n ;\n }\n\n /**\n * Applies all applicable visitors and returns the IDs of the executed ones\n *\n * @return string[]\n */\n private function visit(QueryBuilder $queryBuilder, CriteriaInterface $criteria): array\n {\n $queryVisitors = [];\n\n foreach ($this->visitors as $visitor) {\n if ($visitor->isSatisfiedBy($criteria, $queryBuilder->getRealm())) {\n $visitor->visit($queryBuilder, $criteria);\n\n $queryVisitors[] = $visitor->getIdentifier();\n }\n }\n\n return $queryVisitors;\n }\n\n private function hydrateStages(array $deals): array\n {\n foreach ($this->fetchStages(array_keys($deals)) as $stage) {\n $oppId = (int) $stage['opportunity_id'];\n\n if (! isset($deals[$oppId])) {\n continue; // or throw??!\n }\n\n $deals[$oppId]['stages'][] = [\n 'id' => $stage['stage_id'],\n 'name' => $stage['label'],\n 'enteredAt' => $stage['created_at'],\n ];\n }\n\n return $deals;\n }\n\n /**\n * @param int[] $dealIds\n */\n private function fetchStages(array $dealIds): array\n {\n if (empty($dealIds)) {\n return [];\n }\n\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('os.opportunity_id', 's.id AS stage_id', 's.label', 's.created_at')\n ->from('opportunity_stages', 'os')\n ->leftJoin('os', 'stages', 's', 'os.stage_id=s.id')\n ->where($qb->expr()->in('os.opportunity_id', $dealIds))\n ->orderBy('os.opportunity_id', 'ASC')\n ->addOrderBy('s.created_at', 'ASC')\n ;\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n private function execute(Team $team, ServiceInterface $crmService, QueryBuilder $qb): array\n {\n $result = [];\n\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $data = [\n 'uuid' => RequiresUUID::toNormal($row['uuid']),\n 'name' => $row['name'],\n 'url' => $crmService->generateProviderUrl($row['opp_provider_id'], 'opportunity'),\n 'account' => [\n 'name' => $row['acc_name'],\n 'url' => $crmService->generateProviderUrl(\n providerId: $row['acc_provider_id'],\n objectType: $row['acc_is_internal'] ? 'internal-account' : 'account'\n ),\n ],\n 'owner' => null,\n 'rawValue' => [\n 'amount' => (float) $row['value'],\n 'currency' => $row['currency_code'],\n ],\n 'value' => formatOpportunityValue((float) $row['value'], $row['currency_code']),\n 'openDate' => $row['remotely_created_at'] ?? null,\n 'closeDate' => $row['close_date'] ?? null,\n 'stages' => [],\n 'currentPipelineId' => $row['pipeline_id'],\n 'currentStage' => [\n 'id' => $row['stage_id'],\n 'enteredAt' => $row['stage_updated_at'],\n ],\n 'currentStageUpdatedAt' => $row['stage_updated_at'],\n 'isClosed' => (bool) $row['is_closed'],\n 'isWon' => (bool) $row['is_won'],\n ];\n\n if (isset($row['owner_uuid'])) {\n $data['owner'] = [\n 'uuid' => RequiresUUID::toNormal($row['owner_uuid']),\n 'name' => $row['owner_name'],\n 'photoUrl' => $row['owner_photo'] === null\n ? null\n : client_cdn($row['owner_photo'], $team),\n 'id' => $row['owner_id'],\n 'job' => $row['owner_job'],\n ];\n }\n\n $result[(int) $row['opp_id']] = $data;\n }\n\n return $this->hydrateStages($result);\n }\n\n private function getSearchSelectAndWhereClauses(QueryBuilder $queryBuilder): QueryBuilder\n {\n $qb = clone $queryBuilder;\n $qb->leftJoin('usr', 'job_titles', 'jt', 'usr.job_title_id = jt.id');\n\n $qb\n ->select(...[\n 'opp.id as opp_id',\n 'opp.uuid',\n 'opp.name',\n 'opp.value',\n 'opp.currency_code',\n 'opp.close_date',\n 'opp.remotely_created_at',\n 'opp.is_closed',\n 'opp.is_won',\n ])\n ->addSelect(...[\n 'usr.uuid as owner_uuid',\n 'usr.name AS owner_name',\n 'usr.photo_path as owner_photo',\n 'usr.id AS owner_id',\n 'jt.name as owner_job',\n ])\n ->addSelect('opp.stage_id', 'opp.stage_updated_at')\n ->addSelect(...[\n 'acc.name AS acc_name',\n 'acc.is_internal as acc_is_internal',\n 'opp.stage_updated_at',\n 'acc.crm_provider_id AS acc_provider_id',\n 'opp.crm_provider_id AS opp_provider_id',\n ])\n ->addSelect('rt.business_process_id AS pipeline_id')\n\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not display deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'));\n\n return $qb;\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws SocialAccountTokenInvalidException\n */\n private function getCrmService(Team $team): ServiceInterface\n {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n $crmService->setConfiguration($team->crm);\n if ($crmService instanceof UrlGeneratorInterface) {\n $crmService->setCrmUrlGenerator($team->crm);\n }\n\n return $crmService;\n }\n\n /**\n *\n * @return Generator<DealData>\n */\n public function getForecastData(DealsFilter $filter): Generator\n {\n $opportunities = DB::query()\n ->select([\n 'o.value',\n 'o.close_date',\n 'o.currency_code',\n 'o.is_won',\n 'o.is_closed',\n 'o.probability',\n 'o.forecast_category',\n ])\n ->from('opportunities', 'o')\n ->join('users', 'users.id', '=', 'o.user_id')\n ->join('groups', 'groups.id', '=', 'users.group_id')\n ->where('users.team_id', $filter->getTeam()->getId())\n ->where('o.close_date', '>=', $filter->getStartDate())\n ->where('o.close_date', '<=', $filter->getEndDate())\n ->where('o.currency_code', $filter->getCurrency())\n ->where('o.deleted_at', '=', null)\n ;\n\n $userUuidList = $filter->getUserUuidList();\n if (! empty($userUuidList)) {\n $userUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $userUuidList);\n\n $opportunities->whereIn('users.uuid', $userUuidList);\n }\n\n $groupUuidList = $filter->getGroupUuidList();\n if (! empty($groupUuidList)) {\n $groupUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $groupUuidList);\n\n $opportunities->whereIn('groups.uuid', $groupUuidList);\n }\n\n foreach ($opportunities->cursor() as $row) {\n yield new DealData(\n (float) $row->value,\n $row->close_date,\n ! empty($row->is_won),\n ! empty($row->is_closed),\n $row->probability ?: 0,\n $row->forecast_category ?: '',\n );\n }\n }\n\n public function getUserOpportunitySubscriptions(User $user, array $opportunityIds): Collection\n {\n return $user->subscriptionSets()\n ->where(static function (Eloquent\\Builder $query): void {\n $query\n ->whereNull('expired_at')\n ->orWhere('expired_at', '>=', now());\n })\n ->join('activity_subscriptions', function (Builder $join) use ($opportunityIds) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n $join\n ->where('followable_type', Models\\Activity\\Subscription::FOLLOWABLE_TYPE_OPPORTUNITY)\n ->whereIn('followable_id', $opportunityIds);\n })\n ->pluck('followable_id');\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Component\\DealInsights;\n\nuse Doctrine\\DBAL\\Connection;\nuse Generator;\nuse Illuminate\\Support\\Collection;\nuse Illuminate\\Support\\Facades\\DB;\nuse Jiminny\\Component\\DealInsights\\Forecast\\DealData;\nuse Jiminny\\Component\\DealInsights\\Forecast\\DealsFilter;\nuse Jiminny\\Component\\DealInsights\\QueryBuilder\\QueryBuilder;\nuse Jiminny\\Component\\DealInsights\\QueryBuilder\\Visitor\\QueryBuilderVisitorInterface;\nuse Jiminny\\Contracts\\Services\\Crm\\ServiceInterface;\nuse Jiminny\\Exceptions\\SocialAccountTokenInvalidException;\nuse Jiminny\\Models\\Activity;\nuse Jiminny\\Models\\Crm\\Configuration;\nuse Jiminny\\Models\\Crm\\Field;\nuse Jiminny\\Models\\Stage;\nuse Jiminny\\Models\\Team;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Models;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\DTO\\Utils\\UrlGeneratorInterface;\nuse Jiminny\\Services\\Crm\\ProviderRegistry;\nuse Jiminny\\Traits\\RequiresUUID;\nuse Illuminate\\Database\\Query\\Builder;\nuse Illuminate\\Database\\Eloquent;\nuse Psr\\Container\\ContainerExceptionInterface;\nuse Psr\\Container\\NotFoundExceptionInterface;\n\nclass DealsRepository implements DealsRepositoryInterface\n{\n private Connection $connection;\n\n private ProviderRegistry $providerRegistry;\n\n /**\n * @var QueryBuilderVisitorInterface[]\n */\n private array $visitors = [];\n\n /**\n * @param QueryBuilderVisitorInterface[] $visitors\n */\n public function __construct(Connection $connection, ProviderRegistry $crmProviderRegistry, array $visitors = [])\n {\n $this->connection = $connection;\n $this->providerRegistry = $crmProviderRegistry;\n\n foreach ($visitors as $visitor) {\n $this->visitors[$visitor->getIdentifier()] = $visitor;\n }\n }\n\n public function getDeals(CriteriaInterface $criteria): array\n {\n $context = $criteria->getContext();\n $team = $context->getTeam();\n $crmService = $this->getCrmService($team);\n\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);\n $qb = $this->getSearchSelectAndWhereClauses($qb);\n\n $this->visit($qb, $criteria);\n\n return $this->execute($team, $crmService, $qb);\n }\n\n public function getDeal(Team $team, int $id): array\n {\n $crmService = $this->getCrmService($team);\n\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);\n $qb = $this->getSearchSelectAndWhereClauses($qb);\n $qb->andWhere('opp.id = :id')->setParameter('id', $id);\n\n return $this->execute($team, $crmService, $qb);\n }\n\n public function getCrmFieldData(array $crmFields, int $crmId, array $opportunityIds = [])\n {\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('f.id', 'f.crm_provider_id AS field_name', 'f.label', 'fd.object_id AS dealId', 'fd.value')\n ->from('crm_fields', 'f')\n ->join('f', 'crm_field_data', 'fd', 'fd.crm_field_id = f.id')\n ->where('f.crm_configuration_id = :crm')\n ->andWhere('f.object_type = :type')\n ->andWhere('fd.object_id IN (' . implode(',', $opportunityIds) . ')')\n ->orderBy('fd.object_id', 'ASC')\n ->addOrderBy('fd.updated_at', 'ASC')\n\n ->setParameter('type', Field::OBJECT_OPPORTUNITY)\n ->setParameter('crm', $crmId)\n ;\n\n if (! empty($crmFields)) {\n $fields = array_map(fn ($value): string => '\"' . $value . '\"', $crmFields);\n $qb->andWhere('f.crm_provider_id IN (' . implode(',', $fields) . ')');\n }\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n public function getTotalsInDefaultCurrency(CriteriaInterface $criteria): array\n {\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);\n\n $qb\n ->select('SUM(opp.value) as total')\n ->addSelect('count(*) as `count`')\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'))\n ;\n\n $this->visit($qb, $criteria);\n\n return $qb->executeQuery()->fetchAssociative();\n }\n\n public function getTotals(CriteriaInterface $criteria, string $defaultCurrency): array\n {\n $qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);\n\n $qb\n ->select('COALESCE(opp.currency_code, \"' . $defaultCurrency . '\") AS currency')\n ->addSelect('SUM(opp.value) as total')\n ->addSelect('count(*) as `count`')\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'))\n ->groupBy('currency')\n ;\n\n $this->visit($qb, $criteria);\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n public function getDealActivities(CriteriaInterface $criteria): array\n {\n $qb = Activity::with(['participants', 'user'])\n ->where('opportunity_id', $criteria->getOpportunityId())\n ->whereDate('actual_start_time', '>=', $criteria->getPeriod()->getStartDate())\n ->whereDate('actual_start_time', '<=', $criteria->getPeriod()->getEndDate())\n ->orderBy($criteria->getSortBy(), $criteria->getSortDirection())\n ;\n\n // Should we filter activities by criteria? It's intended to filter deals.\n\n return $qb->get()->all();\n }\n\n public function getStages(CriteriaInterface $criteria): array\n {\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('id', 'label', 'sequence')\n ->from('stages', 's')\n ->where('crm_configuration_id = :crm_configuration_id')\n ->andWhere('type = :type')\n ->orderBy('sequence', 'ASC')\n\n ->setParameter('crm_configuration_id', $criteria->getContext()->getTeam()->getCrmConfiguration()->getId())\n ->setParameter('type', Stage::TYPE_OPPORTUNITY);\n\n $result = [];\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $result[$row['id']] = [\n 'label' => $row['label'],\n 'sequence' => $row['sequence'],\n ];\n }\n\n return $result;\n }\n\n public function getConfigurationStages(Configuration $configuration): Collection\n {\n return $configuration\n ->stages()\n ->where('type', Stage::TYPE_OPPORTUNITY)\n ->get();\n }\n\n public function getPipelineData(Configuration $crm): array\n {\n $qb = new QueryBuilder($this->connection);\n $provider = $crm->provider;\n\n $qb\n ->select('s.label', 's.crm_provider_id', 's.sequence', 'bps.business_process_id AS pipeline_id')\n ->from('stages', 's')\n ->join('s', 'business_process_stages', 'bps', 's.id=bps.stage_id')\n ->where('s.crm_configuration_id = :crm_configuration_id')\n ->andWhere('s.type = :type')\n ->orderBy('bps.business_process_id', 'ASC')\n ->addOrderBy('s.sequence', 'ASC')\n\n ->setParameter('crm_configuration_id', $crm->id)\n ->setParameter('type', Stage::TYPE_OPPORTUNITY)\n ;\n\n $result = [];\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $value = $provider === Configuration::PROVIDER_SALESFORCE ? $row['label'] : $row['crm_provider_id'];\n $result[$row['pipeline_id']][] = [\n 'value' => $value,\n 'label' => $row['label'],\n 'sequence' => $row['sequence'],\n ];\n }\n\n return $result;\n }\n\n private function createQueryBuilder(string $realm): QueryBuilder\n {\n return (new QueryBuilder($this->connection))\n ->setRealm($realm)\n ->from('opportunities', 'opp')\n ->leftJoin('opp', 'record_types', 'rt', 'opp.record_type_id = rt.id')\n ->leftJoin('opp', 'users', 'usr', 'opp.user_id = usr.id')\n ->leftJoin('opp', 'accounts', 'acc', 'opp.account_id = acc.id')\n ;\n }\n\n /**\n * Applies all applicable visitors and returns the IDs of the executed ones\n *\n * @return string[]\n */\n private function visit(QueryBuilder $queryBuilder, CriteriaInterface $criteria): array\n {\n $queryVisitors = [];\n\n foreach ($this->visitors as $visitor) {\n if ($visitor->isSatisfiedBy($criteria, $queryBuilder->getRealm())) {\n $visitor->visit($queryBuilder, $criteria);\n\n $queryVisitors[] = $visitor->getIdentifier();\n }\n }\n\n return $queryVisitors;\n }\n\n private function hydrateStages(array $deals): array\n {\n foreach ($this->fetchStages(array_keys($deals)) as $stage) {\n $oppId = (int) $stage['opportunity_id'];\n\n if (! isset($deals[$oppId])) {\n continue; // or throw??!\n }\n\n $deals[$oppId]['stages'][] = [\n 'id' => $stage['stage_id'],\n 'name' => $stage['label'],\n 'enteredAt' => $stage['created_at'],\n ];\n }\n\n return $deals;\n }\n\n /**\n * @param int[] $dealIds\n */\n private function fetchStages(array $dealIds): array\n {\n if (empty($dealIds)) {\n return [];\n }\n\n $qb = new QueryBuilder($this->connection);\n\n $qb\n ->select('os.opportunity_id', 's.id AS stage_id', 's.label', 's.created_at')\n ->from('opportunity_stages', 'os')\n ->leftJoin('os', 'stages', 's', 'os.stage_id=s.id')\n ->where($qb->expr()->in('os.opportunity_id', $dealIds))\n ->orderBy('os.opportunity_id', 'ASC')\n ->addOrderBy('s.created_at', 'ASC')\n ;\n\n return $qb->executeQuery()->fetchAllAssociative();\n }\n\n private function execute(Team $team, ServiceInterface $crmService, QueryBuilder $qb): array\n {\n $result = [];\n\n foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {\n $data = [\n 'uuid' => RequiresUUID::toNormal($row['uuid']),\n 'name' => $row['name'],\n 'url' => $crmService->generateProviderUrl($row['opp_provider_id'], 'opportunity'),\n 'account' => [\n 'name' => $row['acc_name'],\n 'url' => $crmService->generateProviderUrl(\n providerId: $row['acc_provider_id'],\n objectType: $row['acc_is_internal'] ? 'internal-account' : 'account'\n ),\n ],\n 'owner' => null,\n 'rawValue' => [\n 'amount' => (float) $row['value'],\n 'currency' => $row['currency_code'],\n ],\n 'value' => formatOpportunityValue((float) $row['value'], $row['currency_code']),\n 'openDate' => $row['remotely_created_at'] ?? null,\n 'closeDate' => $row['close_date'] ?? null,\n 'stages' => [],\n 'currentPipelineId' => $row['pipeline_id'],\n 'currentStage' => [\n 'id' => $row['stage_id'],\n 'enteredAt' => $row['stage_updated_at'],\n ],\n 'currentStageUpdatedAt' => $row['stage_updated_at'],\n 'isClosed' => (bool) $row['is_closed'],\n 'isWon' => (bool) $row['is_won'],\n ];\n\n if (isset($row['owner_uuid'])) {\n $data['owner'] = [\n 'uuid' => RequiresUUID::toNormal($row['owner_uuid']),\n 'name' => $row['owner_name'],\n 'photoUrl' => $row['owner_photo'] === null\n ? null\n : client_cdn($row['owner_photo'], $team),\n 'id' => $row['owner_id'],\n 'job' => $row['owner_job'],\n ];\n }\n\n $result[(int) $row['opp_id']] = $data;\n }\n\n return $this->hydrateStages($result);\n }\n\n private function getSearchSelectAndWhereClauses(QueryBuilder $queryBuilder): QueryBuilder\n {\n $qb = clone $queryBuilder;\n $qb->leftJoin('usr', 'job_titles', 'jt', 'usr.job_title_id = jt.id');\n\n $qb\n ->select(...[\n 'opp.id as opp_id',\n 'opp.uuid',\n 'opp.name',\n 'opp.value',\n 'opp.currency_code',\n 'opp.close_date',\n 'opp.remotely_created_at',\n 'opp.is_closed',\n 'opp.is_won',\n ])\n ->addSelect(...[\n 'usr.uuid as owner_uuid',\n 'usr.name AS owner_name',\n 'usr.photo_path as owner_photo',\n 'usr.id AS owner_id',\n 'jt.name as owner_job',\n ])\n ->addSelect('opp.stage_id', 'opp.stage_updated_at')\n ->addSelect(...[\n 'acc.name AS acc_name',\n 'acc.is_internal as acc_is_internal',\n 'opp.stage_updated_at',\n 'acc.crm_provider_id AS acc_provider_id',\n 'opp.crm_provider_id AS opp_provider_id',\n ])\n ->addSelect('rt.business_process_id AS pipeline_id')\n\n ->where($qb->expr()->isNotNull('opp.user_id')) // we should not display deals owned by external users\n ->andWhere($qb->expr()->isNull('opp.deleted_at'));\n\n return $qb;\n }\n\n /**\n * @throws ContainerExceptionInterface\n * @throws NotFoundExceptionInterface\n * @throws SocialAccountTokenInvalidException\n */\n private function getCrmService(Team $team): ServiceInterface\n {\n $crmService = $this->providerRegistry->get($team->crm->provider);\n $crmService->setConfiguration($team->crm);\n if ($crmService instanceof UrlGeneratorInterface) {\n $crmService->setCrmUrlGenerator($team->crm);\n }\n\n return $crmService;\n }\n\n /**\n *\n * @return Generator<DealData>\n */\n public function getForecastData(DealsFilter $filter): Generator\n {\n $opportunities = DB::query()\n ->select([\n 'o.value',\n 'o.close_date',\n 'o.currency_code',\n 'o.is_won',\n 'o.is_closed',\n 'o.probability',\n 'o.forecast_category',\n ])\n ->from('opportunities', 'o')\n ->join('users', 'users.id', '=', 'o.user_id')\n ->join('groups', 'groups.id', '=', 'users.group_id')\n ->where('users.team_id', $filter->getTeam()->getId())\n ->where('o.close_date', '>=', $filter->getStartDate())\n ->where('o.close_date', '<=', $filter->getEndDate())\n ->where('o.currency_code', $filter->getCurrency())\n ->where('o.deleted_at', '=', null)\n ;\n\n $userUuidList = $filter->getUserUuidList();\n if (! empty($userUuidList)) {\n $userUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $userUuidList);\n\n $opportunities->whereIn('users.uuid', $userUuidList);\n }\n\n $groupUuidList = $filter->getGroupUuidList();\n if (! empty($groupUuidList)) {\n $groupUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $groupUuidList);\n\n $opportunities->whereIn('groups.uuid', $groupUuidList);\n }\n\n foreach ($opportunities->cursor() as $row) {\n yield new DealData(\n (float) $row->value,\n $row->close_date,\n ! empty($row->is_won),\n ! empty($row->is_closed),\n $row->probability ?: 0,\n $row->forecast_category ?: '',\n );\n }\n }\n\n public function getUserOpportunitySubscriptions(User $user, array $opportunityIds): Collection\n {\n return $user->subscriptionSets()\n ->where(static function (Eloquent\\Builder $query): void {\n $query\n ->whereNull('expired_at')\n ->orWhere('expired_at', '>=', now());\n })\n ->join('activity_subscriptions', function (Builder $join) use ($opportunityIds) {\n $join\n ->on('subscription_set_id', '=', 'activity_subscription_sets.id');\n $join\n ->where('followable_type', Models\\Activity\\Subscription::FOLLOWABLE_TYPE_OPPORTUNITY)\n ->whereIn('followable_id', $opportunityIds);\n })\n ->pluck('followable_id');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24335106,"top":0.047885075,"width":0.024268618,"height":0.024740623},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8713754181224853824
|
7071332924158193579
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20157-AJ-report-not-se Project: faVsco.js, menu
JY-20157-AJ-report-not-send-notification, menu
Start Listening for PHP Debug Connections
RequestGenerateAskJiminnyReportJobTest
Run 'RequestGenerateAskJiminnyReportJobTest'
Debug 'RequestGenerateAskJiminnyReportJobTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
3
111
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Console\Commands;
use Carbon\Carbon;
use Illuminate\Console\Command;
use InvalidArgumentException;
use Jiminny\Jobs\AutomatedReports\RequestGenerateAskJiminnyReportJob;
use Jiminny\Jobs\AutomatedReports\SendReportMailJob;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\Activity;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Repositories\AutomatedReportsRepository;
use Jiminny\Services\Activity\CrmOwnerResolver;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
/**
* Class JiminnyDebugCommand
*
* @package Jiminny\Console\Commands
*/
class JiminnyDebugCommand extends Command
{
public const string FREQUENCY_DAILY = 'daily';
public const string FREQUENCY_WEEKLY = 'weekly';
public const string FREQUENCY_MONTHLY = 'monthly';
public const string FREQUENCY_QUARTERLY = 'quarterly';
public const string FREQUENCY_ONE_OFF = 'one_off';
protected $signature = 'jiminny:debug';
public function handle(
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService,
AutomatedReportsRepository $automatedReportsRepository,
): void
{
$user = User::find(143);
$count$automatedReportsRepository->countUserReports($user);
exit(1);
$now = Carbon::now()->subDay(5);
$from = $now->copy()->previousWeekday()->startOfDay();
$to = $now->copy()->previousWeekday()->endOfDay();
$this->info("Now: {$now->toDateTimeString()}");
$this->info("From: {$from->toDateTimeString()}");
$this->info("To: {$to->toDateTimeString()}");
exit(1);
$report = AutomatedReport::find(71);
$job = new RequestGenerateAskJiminnyReportJob($report->getUuid());
$jobDispatcher->dispatch($job);
exit(1);
// $this->formatDate($jobDispatcher);
// $this->sendMail($jobDispatcher, $automatedReportsService);
// $this->crmService();
$this->getPayload($automatedReportsService);
exit(1);
}
private function crmService()
{
$activity = Activity::find(418141);
$team = Team::find(19);
$config = $team->getCrmConfiguration();
$crmResolver = app(CrmOwnerResolver::class, [
'team' => $team,
'integrationAdmin' => $team->getOwner(),
'providerSlug' => $config->getProviderName(),
]);
$crmService = $crmResolver->prepareCrmService();
$crmService->createTranscriptNotes($activity);
}
private function sendMail(JobDispatcherInterface $jobDispatcher, AutomatedReportsService $automatedReportsService)
{
$reportUuid = '';
// $report = $automatedReportsService->getReportResult($reportUuid);
$report = AutomatedReportResult::find(275);
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
$recipient = $validRecipients[0];
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$s3Path = $automatedReportsService->getMediaPath($report);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$fileName ' . PHP_EOL . print_r($fileName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$typeName ' . PHP_EOL . print_r($typeName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$teamsName ' . PHP_EOL . print_r($teamsName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$periodName ' . PHP_EOL . print_r($periodName, true));
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$s3Path ' . PHP_EOL . print_r($s3Path, true));
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $report->getUuid(),
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: true,
)
);
exit(1);
}
private function formatDate(JobDispatcherInterface $jobDispatcher): void
{
$customName = 'Custom report name';
// $frequency = self::FREQUENCY_DAILY;
// $frequency = self::FREQUENCY_WEEKLY;
$frequency = self::FREQUENCY_MONTHLY;
// $frequency = self::FREQUENCY_QUARTERLY;
// $frequency = self::FREQUENCY_ONE_OFF;
$period = $this->calculateFromAndToDatePeriod($frequency);
$from = $period['fromDate'];
$to = $period['toDate'];
$periodName = $this->formatReportPeriodName($frequency, $from, $to);
$filenameSuffix = null;
if ($customName) {
if ($filenameSuffix) {
$customName .= " {$filenameSuffix}";
}
$result = $this->sanitizeFileName("{$customName} - {$periodName}");
}
$this->info($result);
}
public function calculateFromAndToDatePeriod(
string $frequency,
?Carbon $fromDate = null,
?Carbon $toDate = null
): array {
if ($frequency === self::FREQUENCY_ONE_OFF) {
return [
'fromDate' => $fromDate,
'toDate' => $toDate,
];
}
$now = Carbon::now();
return match ($frequency) {
self::FREQUENCY_DAILY => [
'fromDate' => $now->copy()->subDay()->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_WEEKLY => [
'fromDate' => $now->copy()->subWeeks(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_MONTHLY => [
'fromDate' => $now->copy()->subMonths(1)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
self::FREQUENCY_QUARTERLY => [
'fromDate' => $now->copy()->subMonths(3)->startOfDay(),
'toDate' => $now->copy()->subDay()->endOfDay(),
],
default => throw new InvalidArgumentException("Unsupported frequency: {$frequency}"),
};
}
private function formatReportPeriodName(string $frequency, Carbon $from, Carbon $to): string
{
$fromYear = $from->format('Y');
$toYear = $to->format('Y');
$differentYears = $fromYear !== $toYear;
switch ($frequency) {
case self::FREQUENCY_DAILY:
return $from->format('j M Y');
case self::FREQUENCY_QUARTERLY:
// 'Jan-Mar 2025' or 'Nov 2024-Jan 2025' if years differ
$startMonth = $from->format('M');
$endMonth = $to->copy()->subMonth();
$endMonthName = $endMonth->format('M');
$endMonthYear = $endMonth->format('Y');
if ($differentYears) {
return "{$startMonth} {$fromYear} - {$endMonthName} {$endMonthYear}";
}
return "{$startMonth} - {$endMonthName} {$toYear}";
case self::FREQUENCY_MONTHLY:
// 'May 2025' - monthly reports are always within the same year
return $from->format('M Y');
case self::FREQUENCY_WEEKLY:
// '4 - 8 Aug 2025', '27 Oct - 3 Nov 2025', or '28 Dec 2024 - 3 Jan 2025' if years differ
$startDay = $from->format('j');
$endDay = $to->format('j');
$startMonth = $from->format('M');
$endMonth = $to->format('M');
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
if ($startMonth !== $endMonth) {
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
}
return "{$startDay} - {$endDay} {$endMonth} {$toYear}";
case self::FREQUENCY_ONE_OFF:
// '2 May-31 May 2025' or '15 Dec 2024-15 Jan 2025' if years differ
$startDay = $from->format('j');
$startMonth = $from->format('M');
$endDay = $to->format('j');
$endMonth = $to->format('M');
// If same month and year, use a format like '2-31 May 2025'
if ($startMonth === $endMonth && ! $differentYears) {
return "{$startDay} - {$endDay} {$startMonth} {$toYear}";
}
// If different years, include both years
if ($differentYears) {
return "{$startDay} {$startMonth} {$fromYear} - {$endDay} {$endMonth} {$toYear}";
}
// Same year but different months
return "{$startDay} {$startMonth} - {$endDay} {$endMonth} {$toYear}";
default:
// Default format for unknown frequencies
return $from->format('j M Y') . ' - ' . $to->format('j M Y');
}
}
public function sanitizeFileName(string $fileName): string
{
return str_replace(['/', '\\'], '-', $fileName);
}
private function getPayload(AutomatedReportsService $automatedReportsService)
{
$reportResult = AutomatedReportResult::find(269);
$automatedReport = $reportResult->getReport();
$activityIds = [1,2,3];
$payload = $automatedReportsService->getAskJiminnyGenerateReportPayload(
automatedReport: $automatedReport,
reportResult: $reportResult,
activityIds: $activityIds,
);
\Illuminate\Support\Facades\Log::channel('custom_channel')->info('$payload ' . PHP_EOL . print_r($payload, true));
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
36
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Component\DealInsights;
use Doctrine\DBAL\Connection;
use Generator;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB;
use Jiminny\Component\DealInsights\Forecast\DealData;
use Jiminny\Component\DealInsights\Forecast\DealsFilter;
use Jiminny\Component\DealInsights\QueryBuilder\QueryBuilder;
use Jiminny\Component\DealInsights\QueryBuilder\Visitor\QueryBuilderVisitorInterface;
use Jiminny\Contracts\Services\Crm\ServiceInterface;
use Jiminny\Exceptions\SocialAccountTokenInvalidException;
use Jiminny\Models\Activity;
use Jiminny\Models\Crm\Configuration;
use Jiminny\Models\Crm\Field;
use Jiminny\Models\Stage;
use Jiminny\Models\Team;
use Jiminny\Models\User;
use Jiminny\Models;
use Jiminny\Services\Crm\IntegrationApp\DTO\Utils\UrlGeneratorInterface;
use Jiminny\Services\Crm\ProviderRegistry;
use Jiminny\Traits\RequiresUUID;
use Illuminate\Database\Query\Builder;
use Illuminate\Database\Eloquent;
use Psr\Container\ContainerExceptionInterface;
use Psr\Container\NotFoundExceptionInterface;
class DealsRepository implements DealsRepositoryInterface
{
private Connection $connection;
private ProviderRegistry $providerRegistry;
/**
* @var QueryBuilderVisitorInterface[]
*/
private array $visitors = [];
/**
* @param QueryBuilderVisitorInterface[] $visitors
*/
public function __construct(Connection $connection, ProviderRegistry $crmProviderRegistry, array $visitors = [])
{
$this->connection = $connection;
$this->providerRegistry = $crmProviderRegistry;
foreach ($visitors as $visitor) {
$this->visitors[$visitor->getIdentifier()] = $visitor;
}
}
public function getDeals(CriteriaInterface $criteria): array
{
$context = $criteria->getContext();
$team = $context->getTeam();
$crmService = $this->getCrmService($team);
$qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);
$qb = $this->getSearchSelectAndWhereClauses($qb);
$this->visit($qb, $criteria);
return $this->execute($team, $crmService, $qb);
}
public function getDeal(Team $team, int $id): array
{
$crmService = $this->getCrmService($team);
$qb = $this->createQueryBuilder(QueryBuilder::REALM_DEALS);
$qb = $this->getSearchSelectAndWhereClauses($qb);
$qb->andWhere('opp.id = :id')->setParameter('id', $id);
return $this->execute($team, $crmService, $qb);
}
public function getCrmFieldData(array $crmFields, int $crmId, array $opportunityIds = [])
{
$qb = new QueryBuilder($this->connection);
$qb
->select('f.id', 'f.crm_provider_id AS field_name', 'f.label', 'fd.object_id AS dealId', 'fd.value')
->from('crm_fields', 'f')
->join('f', 'crm_field_data', 'fd', 'fd.crm_field_id = f.id')
->where('f.crm_configuration_id = :crm')
->andWhere('f.object_type = :type')
->andWhere('fd.object_id IN (' . implode(',', $opportunityIds) . ')')
->orderBy('fd.object_id', 'ASC')
->addOrderBy('fd.updated_at', 'ASC')
->setParameter('type', Field::OBJECT_OPPORTUNITY)
->setParameter('crm', $crmId)
;
if (! empty($crmFields)) {
$fields = array_map(fn ($value): string => '"' . $value . '"', $crmFields);
$qb->andWhere('f.crm_provider_id IN (' . implode(',', $fields) . ')');
}
return $qb->executeQuery()->fetchAllAssociative();
}
public function getTotalsInDefaultCurrency(CriteriaInterface $criteria): array
{
$qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);
$qb
->select('SUM(opp.value) as total')
->addSelect('count(*) as `count`')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'))
;
$this->visit($qb, $criteria);
return $qb->executeQuery()->fetchAssociative();
}
public function getTotals(CriteriaInterface $criteria, string $defaultCurrency): array
{
$qb = $this->createQueryBuilder(QueryBuilder::REALM_TOTALS);
$qb
->select('COALESCE(opp.currency_code, "' . $defaultCurrency . '") AS currency')
->addSelect('SUM(opp.value) as total')
->addSelect('count(*) as `count`')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not include deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'))
->groupBy('currency')
;
$this->visit($qb, $criteria);
return $qb->executeQuery()->fetchAllAssociative();
}
public function getDealActivities(CriteriaInterface $criteria): array
{
$qb = Activity::with(['participants', 'user'])
->where('opportunity_id', $criteria->getOpportunityId())
->whereDate('actual_start_time', '>=', $criteria->getPeriod()->getStartDate())
->whereDate('actual_start_time', '<=', $criteria->getPeriod()->getEndDate())
->orderBy($criteria->getSortBy(), $criteria->getSortDirection())
;
// Should we filter activities by criteria? It's intended to filter deals.
return $qb->get()->all();
}
public function getStages(CriteriaInterface $criteria): array
{
$qb = new QueryBuilder($this->connection);
$qb
->select('id', 'label', 'sequence')
->from('stages', 's')
->where('crm_configuration_id = :crm_configuration_id')
->andWhere('type = :type')
->orderBy('sequence', 'ASC')
->setParameter('crm_configuration_id', $criteria->getContext()->getTeam()->getCrmConfiguration()->getId())
->setParameter('type', Stage::TYPE_OPPORTUNITY);
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$result[$row['id']] = [
'label' => $row['label'],
'sequence' => $row['sequence'],
];
}
return $result;
}
public function getConfigurationStages(Configuration $configuration): Collection
{
return $configuration
->stages()
->where('type', Stage::TYPE_OPPORTUNITY)
->get();
}
public function getPipelineData(Configuration $crm): array
{
$qb = new QueryBuilder($this->connection);
$provider = $crm->provider;
$qb
->select('s.label', 's.crm_provider_id', 's.sequence', 'bps.business_process_id AS pipeline_id')
->from('stages', 's')
->join('s', 'business_process_stages', 'bps', 's.id=bps.stage_id')
->where('s.crm_configuration_id = :crm_configuration_id')
->andWhere('s.type = :type')
->orderBy('bps.business_process_id', 'ASC')
->addOrderBy('s.sequence', 'ASC')
->setParameter('crm_configuration_id', $crm->id)
->setParameter('type', Stage::TYPE_OPPORTUNITY)
;
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$value = $provider === Configuration::PROVIDER_SALESFORCE ? $row['label'] : $row['crm_provider_id'];
$result[$row['pipeline_id']][] = [
'value' => $value,
'label' => $row['label'],
'sequence' => $row['sequence'],
];
}
return $result;
}
private function createQueryBuilder(string $realm): QueryBuilder
{
return (new QueryBuilder($this->connection))
->setRealm($realm)
->from('opportunities', 'opp')
->leftJoin('opp', 'record_types', 'rt', 'opp.record_type_id = rt.id')
->leftJoin('opp', 'users', 'usr', 'opp.user_id = usr.id')
->leftJoin('opp', 'accounts', 'acc', 'opp.account_id = acc.id')
;
}
/**
* Applies all applicable visitors and returns the IDs of the executed ones
*
* @return string[]
*/
private function visit(QueryBuilder $queryBuilder, CriteriaInterface $criteria): array
{
$queryVisitors = [];
foreach ($this->visitors as $visitor) {
if ($visitor->isSatisfiedBy($criteria, $queryBuilder->getRealm())) {
$visitor->visit($queryBuilder, $criteria);
$queryVisitors[] = $visitor->getIdentifier();
}
}
return $queryVisitors;
}
private function hydrateStages(array $deals): array
{
foreach ($this->fetchStages(array_keys($deals)) as $stage) {
$oppId = (int) $stage['opportunity_id'];
if (! isset($deals[$oppId])) {
continue; // or throw??!
}
$deals[$oppId]['stages'][] = [
'id' => $stage['stage_id'],
'name' => $stage['label'],
'enteredAt' => $stage['created_at'],
];
}
return $deals;
}
/**
* @param int[] $dealIds
*/
private function fetchStages(array $dealIds): array
{
if (empty($dealIds)) {
return [];
}
$qb = new QueryBuilder($this->connection);
$qb
->select('os.opportunity_id', 's.id AS stage_id', 's.label', 's.created_at')
->from('opportunity_stages', 'os')
->leftJoin('os', 'stages', 's', 'os.stage_id=s.id')
->where($qb->expr()->in('os.opportunity_id', $dealIds))
->orderBy('os.opportunity_id', 'ASC')
->addOrderBy('s.created_at', 'ASC')
;
return $qb->executeQuery()->fetchAllAssociative();
}
private function execute(Team $team, ServiceInterface $crmService, QueryBuilder $qb): array
{
$result = [];
foreach ($qb->executeQuery()->fetchAllAssociative() as $row) {
$data = [
'uuid' => RequiresUUID::toNormal($row['uuid']),
'name' => $row['name'],
'url' => $crmService->generateProviderUrl($row['opp_provider_id'], 'opportunity'),
'account' => [
'name' => $row['acc_name'],
'url' => $crmService->generateProviderUrl(
providerId: $row['acc_provider_id'],
objectType: $row['acc_is_internal'] ? 'internal-account' : 'account'
),
],
'owner' => null,
'rawValue' => [
'amount' => (float) $row['value'],
'currency' => $row['currency_code'],
],
'value' => formatOpportunityValue((float) $row['value'], $row['currency_code']),
'openDate' => $row['remotely_created_at'] ?? null,
'closeDate' => $row['close_date'] ?? null,
'stages' => [],
'currentPipelineId' => $row['pipeline_id'],
'currentStage' => [
'id' => $row['stage_id'],
'enteredAt' => $row['stage_updated_at'],
],
'currentStageUpdatedAt' => $row['stage_updated_at'],
'isClosed' => (bool) $row['is_closed'],
'isWon' => (bool) $row['is_won'],
];
if (isset($row['owner_uuid'])) {
$data['owner'] = [
'uuid' => RequiresUUID::toNormal($row['owner_uuid']),
'name' => $row['owner_name'],
'photoUrl' => $row['owner_photo'] === null
? null
: client_cdn($row['owner_photo'], $team),
'id' => $row['owner_id'],
'job' => $row['owner_job'],
];
}
$result[(int) $row['opp_id']] = $data;
}
return $this->hydrateStages($result);
}
private function getSearchSelectAndWhereClauses(QueryBuilder $queryBuilder): QueryBuilder
{
$qb = clone $queryBuilder;
$qb->leftJoin('usr', 'job_titles', 'jt', 'usr.job_title_id = jt.id');
$qb
->select(...[
'opp.id as opp_id',
'opp.uuid',
'opp.name',
'opp.value',
'opp.currency_code',
'opp.close_date',
'opp.remotely_created_at',
'opp.is_closed',
'opp.is_won',
])
->addSelect(...[
'usr.uuid as owner_uuid',
'usr.name AS owner_name',
'usr.photo_path as owner_photo',
'usr.id AS owner_id',
'jt.name as owner_job',
])
->addSelect('opp.stage_id', 'opp.stage_updated_at')
->addSelect(...[
'acc.name AS acc_name',
'acc.is_internal as acc_is_internal',
'opp.stage_updated_at',
'acc.crm_provider_id AS acc_provider_id',
'opp.crm_provider_id AS opp_provider_id',
])
->addSelect('rt.business_process_id AS pipeline_id')
->where($qb->expr()->isNotNull('opp.user_id')) // we should not display deals owned by external users
->andWhere($qb->expr()->isNull('opp.deleted_at'));
return $qb;
}
/**
* @throws ContainerExceptionInterface
* @throws NotFoundExceptionInterface
* @throws SocialAccountTokenInvalidException
*/
private function getCrmService(Team $team): ServiceInterface
{
$crmService = $this->providerRegistry->get($team->crm->provider);
$crmService->setConfiguration($team->crm);
if ($crmService instanceof UrlGeneratorInterface) {
$crmService->setCrmUrlGenerator($team->crm);
}
return $crmService;
}
/**
*
* @return Generator<DealData>
*/
public function getForecastData(DealsFilter $filter): Generator
{
$opportunities = DB::query()
->select([
'o.value',
'o.close_date',
'o.currency_code',
'o.is_won',
'o.is_closed',
'o.probability',
'o.forecast_category',
])
->from('opportunities', 'o')
->join('users', 'users.id', '=', 'o.user_id')
->join('groups', 'groups.id', '=', 'users.group_id')
->where('users.team_id', $filter->getTeam()->getId())
->where('o.close_date', '>=', $filter->getStartDate())
->where('o.close_date', '<=', $filter->getEndDate())
->where('o.currency_code', $filter->getCurrency())
->where('o.deleted_at', '=', null)
;
$userUuidList = $filter->getUserUuidList();
if (! empty($userUuidList)) {
$userUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $userUuidList);
$opportunities->whereIn('users.uuid', $userUuidList);
}
$groupUuidList = $filter->getGroupUuidList();
if (! empty($groupUuidList)) {
$groupUuidList = array_map(fn ($uuid) => RequiresUUID::toOptimized($uuid), $groupUuidList);
$opportunities->whereIn('groups.uuid', $groupUuidList);
}
foreach ($opportunities->cursor() as $row) {
yield new DealData(
(float) $row->value,
$row->close_date,
! empty($row->is_won),
! empty($row->is_closed),
$row->probability ?: 0,
$row->forecast_category ?: '',
);
}
}
public function getUserOpportunitySubscriptions(User $user, array $opportunityIds): Collection
{
return $user->subscriptionSets()
->where(static function (Eloquent\Builder $query): void {
$query
->whereNull('expired_at')
->orWhere('expired_at', '>=', now());
})
->join('activity_subscriptions', function (Builder $join) use ($opportunityIds) {
$join
->on('subscription_set_id', '=', 'activity_subscription_sets.id');
$join
->where('followable_type', Models\Activity\Subscription::FOLLOWABLE_TYPE_OPPORTUNITY)
->whereIn('followable_id', $opportunityIds);
})
->pluck('followable_id');
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
73537
|
|
26276
|
559
|
44
|
2026-04-15T13:16:59.053608+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776259019053_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
13842815243699390/145Imperial Age--Gate Built--War 13842815243699390/145Imperial Age--Gate Built--Warning: You are being attacked byPlayer 4 Louis VI!!!-Click where you want to build the building.LumberjackT 0+1/0+203 10kovalfklukas (Britons))4/405 Magnus Olafsson: 8373/8373BNV2 Rajyapala: 7960/7960 0g IV1 kovaliklukas: 7701/7701 € IV8 Almish Yiltawar: 7364/7364 GIV6 László I: 6698/6698 € IV3 Huascár: 6477/6477 - TV7 Maximilian of Habsburg: 6008/6008 W IV4 Louis VI: 5512/5512 IV...
|
NULL
|
-8713734312693580855
|
NULL
|
visual_change
|
ocr
|
NULL
|
13842815243699390/145Imperial Age--Gate Built--War 13842815243699390/145Imperial Age--Gate Built--Warning: You are being attacked byPlayer 4 Louis VI!!!-Click where you want to build the building.LumberjackT 0+1/0+203 10kovalfklukas (Britons))4/405 Magnus Olafsson: 8373/8373BNV2 Rajyapala: 7960/7960 0g IV1 kovaliklukas: 7701/7701 € IV8 Almish Yiltawar: 7364/7364 GIV6 László I: 6698/6698 € IV3 Huascár: 6477/6477 - TV7 Maximilian of Habsburg: 6008/6008 W IV4 Louis VI: 5512/5512 IV...
|
26274
|
|
47145
|
993
|
17
|
2026-04-17T11:11:13.200824+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776424273200_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpalo)Support Daily - in 49 m-zshAPP (-zsh)|X4-zsh100% <47• 878Fri 17 Apr 14:11:121₴81ec2-user@ip-10-...• 88DOCKER- 881DEV (docker)• ₴2APP (-zsh)X3./public/vue-assets/assets/ondemand-DutwAJ6x.js:./public/vue-assets/assets/CrmLink-DKYsnHnx.js./public/vue-assets/assets/liquor-tree-COUefof4.js./public/vue-assets/assets/DealRiskList-CjPoT6NF.js:./public/vue-assets/assets/AskAnything-a4BpUaF5.js:./public/vue-assets/assets/lib-CwM9toD2.js./public/vue-assets/assets/AppFormField-CtfldUq7.js./public/vue-assets/assets/deal-view-DhouIWLw.js../public/vue-assets/assets/exports-D1lmea40.js../public/vue-assets/assets/playlists-BWns-By9.js../public/vue-assets/assets/callScoringTemplates-zeRn40ul.js../public/vue-assets/assets/_copy0bject-USkOnlaQ.js../public/vue-assets/assets/pusher-znYCfz7U.js./public/vue-assets/assets/onboard-BENebgvU.js./public/vue-assets/assets/StatusBadge-CmcY3nfX.js./public/vue-assets/assets/kiosk-1vhk4_89.js./public/vue-assets/assets/preload-helper-DCvhahzG.js../public/vue-assets/assets/deal-insights-DN-kVyxK.js../public/vue-assets/assets/ListView-POU6dSu7.js:./public/vue-assets/assets/_plugin-vue_export-helper-DD3s5456.js./public/vue-assets/assets/WelcomeLayout-B6wd32HG.js../public/vue-assets/assets/dashboard-DYH5MiIH.js:./public/vue-assets/assets/emoji-input-CSq87OVy.js../public/vue-assets/assets/AppButton-D3qMd0Dr.js../public/vue-assets/assets/sentry-c0Rhilsu.js:./public/vue-assets/assets/OrgSettingsLayout-ByQjX4wG.js./public/vue-assets/assets/vuex.esm-bundler-DqfufJ2-.js./public/vue-assets/assets/playback-BH9MB7YC.js./public/vue-assets/assets/index.module-Bjlhgfdl.js./public/vue-assets/assets/intl-tel-input-BW4mv40Q.js./public/vue-assets/assets/team-insights-BqCZQtVc.js../public/vue-assets/assets/popper-CQwVcrX4.js../public/vue-assets/assets/PhoneField-CwCIoAYm.js./public/vue-assets/assets/live-XL9ZmWsU.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-BN0485xV.js../public/vue-assets/assets/index-CPycMtZF.js../public/vue-assets/assets/logged-in-layout-B_JDhk5y.js• ₴526.88kB27.91kB30.75kB34.39kB39.50kB39.69kB41.91kB43.22kB47.84kB48.28kB55.13kB61.28kB62.98kB63.26kB64.66kB79.60kB82.59kB94.84kB115.71kB117.59 kВ120.67kB128.71 kB129.28 kB133.44 kB164.28kB176.33kB180.40kB198.79kB218.14kB264.94 kВ298.57kB307.13kB343.99kB367.43 kB689.63kB825.23 kB1,402.70 kB• built in 28.48s[plugin builtin:vite-reporter](!) Some chunksare larger than 500 kB after minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldown0ptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-[API_KEY]) $U* Review screenp...gzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.62kB921p:14.97kBgzip:12.70kBgzip:12.69kBgzip:14.34kBgz1p:16.46kBgzip:15.07kBgz1p:13.28kBgzip:20.09kBgzip:18.88kB9z1p:21.90kB921p:22.96kBgzip:22.64kBgzip:27.46kBgzip:gzip:28.16kB33.78kBgzip:38.71 kBgz1p:34.16 kBgzip:40.05kBgzip:36.72 kBgzip:43.03 kB9z1p:52.24kB9z1p:56.15kBgzip:67.85kBgzip:61.85kBgz1p:64.16kBgzip:60.31kB9z1p:77.21kBgz1p:103.86kBgzip:84.90kB9z1p:97.05kBgzip: 202.81kBgzip:72.53-kBgzip: 438.08 kB• [EMAIL]:73.94kBmap:93.18kBmap:78.74kBmap:115.18kBmap:173.20 kBmap:138.34kBmap:150.73kBmap:150.62kBmap:294.48kBmap:153.25kBmap:65..85kBmap:239.59kBmap:219.27kBmap:201.62kBmap:244.72kBmap:300.68kBmap:3,452.35kBmap:292.79kBmap:308.10kBmap:500.60 kBmap:258.56kBmap:410.48kBmap:266.15kBmap:516.67kBmap:831..82kBmap:623.43kBmap:836.88kBmap:684.87kBmap:1,108.20kBmap:475.61kBmap:959.96kBmap:1,245.28kBmap:849.05kBmap:792.41kBmap:3,016.64kBmap:436.62kBmaр: 6,283.55kBAPP...
|
NULL
|
-8713574657509080329
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpalo)Support Daily - in 49 m-zshAPP (-zsh)|X4-zsh100% <47• 878Fri 17 Apr 14:11:121₴81ec2-user@ip-10-...• 88DOCKER- 881DEV (docker)• ₴2APP (-zsh)X3./public/vue-assets/assets/ondemand-DutwAJ6x.js:./public/vue-assets/assets/CrmLink-DKYsnHnx.js./public/vue-assets/assets/liquor-tree-COUefof4.js./public/vue-assets/assets/DealRiskList-CjPoT6NF.js:./public/vue-assets/assets/AskAnything-a4BpUaF5.js:./public/vue-assets/assets/lib-CwM9toD2.js./public/vue-assets/assets/AppFormField-CtfldUq7.js./public/vue-assets/assets/deal-view-DhouIWLw.js../public/vue-assets/assets/exports-D1lmea40.js../public/vue-assets/assets/playlists-BWns-By9.js../public/vue-assets/assets/callScoringTemplates-zeRn40ul.js../public/vue-assets/assets/_copy0bject-USkOnlaQ.js../public/vue-assets/assets/pusher-znYCfz7U.js./public/vue-assets/assets/onboard-BENebgvU.js./public/vue-assets/assets/StatusBadge-CmcY3nfX.js./public/vue-assets/assets/kiosk-1vhk4_89.js./public/vue-assets/assets/preload-helper-DCvhahzG.js../public/vue-assets/assets/deal-insights-DN-kVyxK.js../public/vue-assets/assets/ListView-POU6dSu7.js:./public/vue-assets/assets/_plugin-vue_export-helper-DD3s5456.js./public/vue-assets/assets/WelcomeLayout-B6wd32HG.js../public/vue-assets/assets/dashboard-DYH5MiIH.js:./public/vue-assets/assets/emoji-input-CSq87OVy.js../public/vue-assets/assets/AppButton-D3qMd0Dr.js../public/vue-assets/assets/sentry-c0Rhilsu.js:./public/vue-assets/assets/OrgSettingsLayout-ByQjX4wG.js./public/vue-assets/assets/vuex.esm-bundler-DqfufJ2-.js./public/vue-assets/assets/playback-BH9MB7YC.js./public/vue-assets/assets/index.module-Bjlhgfdl.js./public/vue-assets/assets/intl-tel-input-BW4mv40Q.js./public/vue-assets/assets/team-insights-BqCZQtVc.js../public/vue-assets/assets/popper-CQwVcrX4.js../public/vue-assets/assets/PhoneField-CwCIoAYm.js./public/vue-assets/assets/live-XL9ZmWsU.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-BN0485xV.js../public/vue-assets/assets/index-CPycMtZF.js../public/vue-assets/assets/logged-in-layout-B_JDhk5y.js• ₴526.88kB27.91kB30.75kB34.39kB39.50kB39.69kB41.91kB43.22kB47.84kB48.28kB55.13kB61.28kB62.98kB63.26kB64.66kB79.60kB82.59kB94.84kB115.71kB117.59 kВ120.67kB128.71 kB129.28 kB133.44 kB164.28kB176.33kB180.40kB198.79kB218.14kB264.94 kВ298.57kB307.13kB343.99kB367.43 kB689.63kB825.23 kB1,402.70 kB• built in 28.48s[plugin builtin:vite-reporter](!) Some chunksare larger than 500 kB after minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldown0ptions.output.codeSplitting to improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-20692-fix-integration-app-[API_KEY]) $U* Review screenp...gzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.62kB921p:14.97kBgzip:12.70kBgzip:12.69kBgzip:14.34kBgz1p:16.46kBgzip:15.07kBgz1p:13.28kBgzip:20.09kBgzip:18.88kB9z1p:21.90kB921p:22.96kBgzip:22.64kBgzip:27.46kBgzip:gzip:28.16kB33.78kBgzip:38.71 kBgz1p:34.16 kBgzip:40.05kBgzip:36.72 kBgzip:43.03 kB9z1p:52.24kB9z1p:56.15kBgzip:67.85kBgzip:61.85kBgz1p:64.16kBgzip:60.31kB9z1p:77.21kBgz1p:103.86kBgzip:84.90kB9z1p:97.05kBgzip: 202.81kBgzip:72.53-kBgzip: 438.08 kB• [EMAIL]:73.94kBmap:93.18kBmap:78.74kBmap:115.18kBmap:173.20 kBmap:138.34kBmap:150.73kBmap:150.62kBmap:294.48kBmap:153.25kBmap:65..85kBmap:239.59kBmap:219.27kBmap:201.62kBmap:244.72kBmap:300.68kBmap:3,452.35kBmap:292.79kBmap:308.10kBmap:500.60 kBmap:258.56kBmap:410.48kBmap:266.15kBmap:516.67kBmap:831..82kBmap:623.43kBmap:836.88kBmap:684.87kBmap:1,108.20kBmap:475.61kBmap:959.96kBmap:1,245.28kBmap:849.05kBmap:792.41kBmap:3,016.64kBmap:436.62kBmaр: 6,283.55kBAPP...
|
NULL
|
|
44621
|
941
|
55
|
2026-04-17T08:55:04.842987+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776416104842_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+Firefox18FileEditViewHistoryBookmarksProfilesTool +Firefox18FileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)Deermioeuooeoe446211<?phpdeclare(strict_typluse Jininny\Models& Vasil VasilevClaos Uoporeatreprivate int $o13 138 Vasä Vasiienpubuic tunctaeSthis->opp16 317 418 5Potas tunstaeNNNALaravelHelpRecordManipulationsTrait© ProcessAlAutomationAnalysisResults© PrepareUpdateDtoAction |©) KuniAcuvily AlAnalysis UistenerWebhookEventProcessol© OpportunityStageUpdated x© OpportunityFind in Flles 17 matches in 7 files =Macsionyuse JiminnyiEvents|CrmiOpportunityStageUpdated:nityStageUpdated Sevent): voiderentsicrm Upportuntystaneopoatcoccuss eOpportunity.php app/Modelsvat vasamiy Lospoasos Vose VozuAsereanECrTeseuse Jininny\Contracts|AjAutomation\CraF11lingTarget0bjectContract;|use Jininny\Contracts\A1Autonation\CraF111ingTargetScopeContract;|tracts\Cra\SyncabLeCrm0bjectInterface:vac vananly srcuts leroerportonatyoyodteuuse Jininny\Exceptions\LogicException;use Jiminny\Models \Activity\Subscription;Jiminny\Models\Activity|SubscriptionSet;|use Jininny tnodetstcre traetovateOpen results in new tab108180D/NSYO08S TW8ityStageUpdated › _constructOSupport Daily - in 3h 5 m100% <478 • Fri 17 Apr 11:55:044SutmAudiofileServiceTestwCascadeNew Cascade• Q 88• Fri17 Apr 11:55+ 0•• File maskcI".phpModels/Opportunity .php 24oho 196|OpportunityPendingAlAnalysisAfterStageChanged.php 40OpportunityStageUpdated.php 9trerocrvicertonocr.pnp 730lMstsenkdlnn mи ACAlllian KyuchukovNikolay NikolovVasil VasilevMihail MihayloCmd +Enterwpen trind mineowotrantonetrur ueceAsk anything (XOL)W Windsurf Teams (Pre-Release)|13:21 LF UTF-8Co 4 spacesIs master ®NORMAL18Lukas Kovalik11:55 AM | Daily - Processing...
|
NULL
|
-8713553218683339416
|
NULL
|
click
|
ocr
|
NULL
|
+Firefox18FileEditViewHistoryBookmarksProfilesTool +Firefox18FileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/xpx-omah-rknllian Kyuchukov (Presenting, annotating)Deermioeuooeoe446211<?phpdeclare(strict_typluse Jininny\Models& Vasil VasilevClaos Uoporeatreprivate int $o13 138 Vasä Vasiienpubuic tunctaeSthis->opp16 317 418 5Potas tunstaeNNNALaravelHelpRecordManipulationsTrait© ProcessAlAutomationAnalysisResults© PrepareUpdateDtoAction |©) KuniAcuvily AlAnalysis UistenerWebhookEventProcessol© OpportunityStageUpdated x© OpportunityFind in Flles 17 matches in 7 files =Macsionyuse JiminnyiEvents|CrmiOpportunityStageUpdated:nityStageUpdated Sevent): voiderentsicrm Upportuntystaneopoatcoccuss eOpportunity.php app/Modelsvat vasamiy Lospoasos Vose VozuAsereanECrTeseuse Jininny\Contracts|AjAutomation\CraF11lingTarget0bjectContract;|use Jininny\Contracts\A1Autonation\CraF111ingTargetScopeContract;|tracts\Cra\SyncabLeCrm0bjectInterface:vac vananly srcuts leroerportonatyoyodteuuse Jininny\Exceptions\LogicException;use Jiminny\Models \Activity\Subscription;Jiminny\Models\Activity|SubscriptionSet;|use Jininny tnodetstcre traetovateOpen results in new tab108180D/NSYO08S TW8ityStageUpdated › _constructOSupport Daily - in 3h 5 m100% <478 • Fri 17 Apr 11:55:044SutmAudiofileServiceTestwCascadeNew Cascade• Q 88• Fri17 Apr 11:55+ 0•• File maskcI".phpModels/Opportunity .php 24oho 196|OpportunityPendingAlAnalysisAfterStageChanged.php 40OpportunityStageUpdated.php 9trerocrvicertonocr.pnp 730lMstsenkdlnn mи ACAlllian KyuchukovNikolay NikolovVasil VasilevMihail MihayloCmd +Enterwpen trind mineowotrantonetrur ueceAsk anything (XOL)W Windsurf Teams (Pre-Release)|13:21 LF UTF-8Co 4 spacesIs master ®NORMAL18Lukas Kovalik11:55 AM | Daily - Processing...
|
NULL
|
|
46853
|
986
|
49
|
2026-04-17T10:49:54.100707+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776422994100_m2.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/dashboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Developers | HubSpot
Developers Workers | Datadog
Developers | HubSpot
Developers | HubSpot
Inbox (1,576) - [EMAIL] - Jiminny Mail
Inbox (1,576) - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
New Tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
[JY-20692] Issue with reconnecting Zoho - Jira
[JY-20692] Issue with reconnecting Zoho - Jira
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
My Recordings
My Recordings
Everyone's Recordings
Everyone's Recordings
No Recordings
Schedule
Schedule
Invite Notetaker
This Week
This Week
My Schedule
My Schedule
No Meetings
Trending this month
Trending this month
Sort by Sort by: Most played
Sort by
Sort by:
Most played
No Recordings
Live Feed
Live Feed
No Activity
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/connect/zohocrm
https://app.dev.jiminny.com/connect/zohocrm
”, initiator “
https://app.dev.jiminny.com/connect/zohocrm
https://app.dev.jiminny.com/connect/zohocrm
”, accessing target “
https://app.dev.jiminny.com/api/v1/integration-app-connect
https://app.dev.jiminny.com/api/v1/integration-app-connect
” ([IP_ADDRESS]:443) via xhr. Secure context: True, prompt action: (null)
zohocrm
zohocrm
Unknown pseudo-class or pseudo-element ‘-moz-focus-inner’. Ruleset ignored due to bad selector.
logged-in-layout-1mAqkmnS.css:1:14775
logged-in-layout-1mAqkmnS.css
:1:14775
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:20926
logged-in-layout-1mAqkmnS.css
:1:20926
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21254
logged-in-layout-1mAqkmnS.css
:1:21254
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21583
logged-in-layout-1mAqkmnS.css
:1:21583
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21910
logged-in-layout-1mAqkmnS.css
:1:21910
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:23594
logged-in-layout-1mAqkmnS.css
:1:23594
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:27238
logged-in-layout-1mAqkmnS.css
:1:27238
Show/hide message details.
Unknown property ‘line-clamp’. Declaration dropped.
logged-in-layout-1mAqkmnS.css:1:61836
logged-in-layout-1mAqkmnS.css
:1:61836
Show/hide message details.
Expected ‘none’, URL, or filter function but found ‘alpha(’. Error in parsing value for ‘filter’. Declaration dropped.
logged-in-layout-1mAqkmnS.css:1:94056
logged-in-layout-1mAqkmnS.css
:1:94056
Unknown pseudo-class or pseudo-element ‘-ms-clear’. Ruleset ignored due to bad selector.
logged-in-layout-1mAqkmnS.css:1:124881
logged-in-layout-1mAqkmnS.css
:1:124881
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js
https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.0890625,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Developers | HubSpot","depth":4,"bounds":{"left":0.0,"top":0.08263889,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developers | HubSpot","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.04453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Inbox (1,576) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Inbox (1,576) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.11445312,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"120216 is your HubSpot Log In Code - integration-account@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"120216 is your HubSpot Log In Code - integration-account@jiminny.com - Jiminny Mail","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.17734376,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"CloudWatch | eu-west-1","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CloudWatch | eu-west-1","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.048828125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.17421874,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20692] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20692] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.09726562,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.31666666,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.3402778,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"My Recordings","depth":10,"bounds":{"left":0.12265625,"top":0.06944445,"width":0.043359376,"height":0.045833334},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"My Recordings","depth":11,"bounds":{"left":0.1265625,"top":0.08680555,"width":0.035546876,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Everyone's Recordings","depth":10,"bounds":{"left":0.39648438,"top":0.06944445,"width":0.061328124,"height":0.045833334},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Everyone's Recordings","depth":11,"bounds":{"left":0.40039062,"top":0.08680555,"width":0.053515624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Recordings","depth":13,"bounds":{"left":0.2722656,"top":0.19791667,"width":0.0359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Schedule","depth":9,"bounds":{"left":0.12460937,"top":0.25555557,"width":0.028515626,"height":0.023611112},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Schedule","depth":10,"bounds":{"left":0.12460937,"top":0.25972223,"width":0.028515626,"height":0.015277778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Invite Notetaker","depth":10,"bounds":{"left":0.40976563,"top":0.2534722,"width":0.051953126,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"This Week","depth":10,"bounds":{"left":0.12460937,"top":0.29652777,"width":0.33125,"height":0.025694445},"value":"This Week","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"This Week","depth":12,"bounds":{"left":0.12890625,"top":0.30347222,"width":0.02578125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"My Schedule","depth":10,"bounds":{"left":0.12460937,"top":0.32916668,"width":0.33125,"height":0.025694445},"value":"My Schedule","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"My Schedule","depth":12,"bounds":{"left":0.12890625,"top":0.3361111,"width":0.03125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Meetings","depth":12,"bounds":{"left":0.2746094,"top":0.44722223,"width":0.03125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Trending this month","depth":9,"bounds":{"left":0.12851563,"top":0.5298611,"width":0.054296874,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trending this month","depth":10,"bounds":{"left":0.12851563,"top":0.53125,"width":0.054296874,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Sort by Sort by: Most played","depth":9,"bounds":{"left":0.38554686,"top":0.525,"width":0.06640625,"height":0.025694445},"value":"Sort by Sort by: Most played","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Sort by","depth":10,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":11,"bounds":{"left":0.38984376,"top":0.53194445,"width":0.019921875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most played","depth":11,"bounds":{"left":0.40976563,"top":0.53194445,"width":0.03046875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Recordings","depth":12,"bounds":{"left":0.2722656,"top":0.65,"width":0.0359375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Live Feed","depth":9,"bounds":{"left":0.12851563,"top":0.7256944,"width":0.02578125,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Live Feed","depth":10,"bounds":{"left":0.12851563,"top":0.7270833,"width":0.02578125,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Activity","depth":12,"bounds":{"left":0.2765625,"top":0.8388889,"width":0.02734375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear the Web Console output (⌘K, Ctrl+L)","depth":15,"bounds":{"left":0.46328124,"top":0.068055555,"width":0.01015625,"height":0.013888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Filter Output","depth":15,"bounds":{"left":0.47578126,"top":0.065972224,"width":0.36132812,"height":0.018055556},"role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXCheckBox","text":"Errors","depth":15,"bounds":{"left":0.8417969,"top":0.068055555,"width":0.0171875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Warnings","depth":15,"bounds":{"left":0.85976565,"top":0.068055555,"width":0.023828125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Info","depth":15,"bounds":{"left":0.884375,"top":0.068055555,"width":0.0125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Logs","depth":15,"bounds":{"left":0.89765626,"top":0.068055555,"width":0.014453125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Debug","depth":15,"bounds":{"left":0.9128906,"top":0.068055555,"width":0.01796875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"CSS","depth":15,"bounds":{"left":0.9359375,"top":0.068055555,"width":0.01328125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"XHR","depth":15,"bounds":{"left":0.95,"top":0.068055555,"width":0.013671875,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Requests","depth":15,"bounds":{"left":0.9644531,"top":0.068055555,"width":0.023828125,"height":0.013888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Console Settings","depth":15,"bounds":{"left":0.9898437,"top":0.06527778,"width":0.01015625,"height":0.019444445},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Local Network Access detected: top-level site “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/connect/zohocrm","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/connect/zohocrm","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, initiator “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/connect/zohocrm","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/connect/zohocrm","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, accessing target “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/api/v1/integration-app-connect","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/api/v1/integration-app-connect","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"” (127.0.0.1:443) via xhr. Secure context: True, prompt action: (null)","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"zohocrm","depth":20,"help_text":"View source in Debugger → https://app.dev.jiminny.com/connect/zohocrm","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"zohocrm","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown pseudo-class or pseudo-element ‘-moz-focus-inner’. Ruleset ignored due to bad selector.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:14775","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:14775","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:14775","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:20926","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:20926","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:20926","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:21254","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:21254","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:21254","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:21583","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:21583","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:21583","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:21910","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:21910","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:21910","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:23594","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:23594","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:23594","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unexpected token ‘style(’ in media list.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:27238","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:27238","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:27238","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Show/hide message details.","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Unknown property ‘line-clamp’. Declaration dropped.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:61836","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:61836","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:61836","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Show/hide message details.","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Expected ‘none’, URL, or filter function but found ‘alpha(’. Error in parsing value for ‘filter’. Declaration dropped.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:94056","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:94056","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:94056","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown pseudo-class or pseudo-element ‘-ms-clear’. Ruleset ignored due to bad selector.","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"logged-in-layout-1mAqkmnS.css:1:124881","depth":20,"help_text":"View source in Style Editor → https://app.dev.jiminny.com/vue-assets/assets/logged-in-layout-1mAqkmnS.css:1:124881","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"logged-in-layout-1mAqkmnS.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":1:124881","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local Network Access detected: top-level site “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, initiator “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, accessing target “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"” (127.0.0.1:443) via https. Secure context: True, prompt action: (null)","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"dashboard","depth":20,"help_text":"View source in Debugger → https://app.dev.jiminny.com/dashboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local Network Access detected: top-level site “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, initiator “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, accessing target “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"” (127.0.0.1:443) via https. Secure context: True, prompt action: (null)","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"dashboard","depth":20,"help_text":"View source in Debugger → https://app.dev.jiminny.com/dashboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Local Network Access detected: top-level site “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, initiator “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/dashboard","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"”, accessing target “","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js","depth":21,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"” (127.0.0.1:443) via https. Secure context: True, prompt action: (null)","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"dashboard","depth":20,"help_text":"View source in Debugger → https://app.dev.jiminny.com/dashboard","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"dashboard","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8713300243195216918
|
6501189442638201479
|
click
|
accessibility
|
NULL
|
Workers | Datadog
Developers | HubSpot
Developers Workers | Datadog
Developers | HubSpot
Developers | HubSpot
Inbox (1,576) - [EMAIL] - Jiminny Mail
Inbox (1,576) - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
120216 is your HubSpot Log In Code - [EMAIL] - Jiminny Mail
CloudWatch | eu-west-1
CloudWatch | eu-west-1
New Tab
New Tab
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
fix-cache-for-business-processes by ilian-jiminny · Pull Request #11985 · jiminny/app
[JY-20692] Issue with reconnecting Zoho - Jira
[JY-20692] Issue with reconnecting Zoho - Jira
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
My Recordings
My Recordings
Everyone's Recordings
Everyone's Recordings
No Recordings
Schedule
Schedule
Invite Notetaker
This Week
This Week
My Schedule
My Schedule
No Meetings
Trending this month
Trending this month
Sort by Sort by: Most played
Sort by
Sort by:
Most played
No Recordings
Live Feed
Live Feed
No Activity
Clear the Web Console output (⌘K, Ctrl+L)
Filter Output
Errors
Warnings
Info
Logs
Debug
CSS
XHR
Requests
Console Settings
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/connect/zohocrm
https://app.dev.jiminny.com/connect/zohocrm
”, initiator “
https://app.dev.jiminny.com/connect/zohocrm
https://app.dev.jiminny.com/connect/zohocrm
”, accessing target “
https://app.dev.jiminny.com/api/v1/integration-app-connect
https://app.dev.jiminny.com/api/v1/integration-app-connect
” ([IP_ADDRESS]:443) via xhr. Secure context: True, prompt action: (null)
zohocrm
zohocrm
Unknown pseudo-class or pseudo-element ‘-moz-focus-inner’. Ruleset ignored due to bad selector.
logged-in-layout-1mAqkmnS.css:1:14775
logged-in-layout-1mAqkmnS.css
:1:14775
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:20926
logged-in-layout-1mAqkmnS.css
:1:20926
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21254
logged-in-layout-1mAqkmnS.css
:1:21254
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21583
logged-in-layout-1mAqkmnS.css
:1:21583
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:21910
logged-in-layout-1mAqkmnS.css
:1:21910
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:23594
logged-in-layout-1mAqkmnS.css
:1:23594
Unexpected token ‘style(’ in media list.
logged-in-layout-1mAqkmnS.css:1:27238
logged-in-layout-1mAqkmnS.css
:1:27238
Show/hide message details.
Unknown property ‘line-clamp’. Declaration dropped.
logged-in-layout-1mAqkmnS.css:1:61836
logged-in-layout-1mAqkmnS.css
:1:61836
Show/hide message details.
Expected ‘none’, URL, or filter function but found ‘alpha(’. Error in parsing value for ‘filter’. Declaration dropped.
logged-in-layout-1mAqkmnS.css:1:94056
logged-in-layout-1mAqkmnS.css
:1:94056
Unknown pseudo-class or pseudo-element ‘-ms-clear’. Ruleset ignored due to bad selector.
logged-in-layout-1mAqkmnS.css:1:124881
logged-in-layout-1mAqkmnS.css
:1:124881
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-result-CQou30yT.js
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css
https://app.dev.jiminny.com/vue-assets/assets/activity-preview-BDxP2S0-.css
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard
Local Network Access detected: top-level site “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, initiator “
https://app.dev.jiminny.com/dashboard
https://app.dev.jiminny.com/dashboard
”, accessing target “
https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js
https://app.dev.jiminny.com/vue-assets/assets/filters-D_eXZdIL.js
” ([IP_ADDRESS]:443) via https. Secure context: True, prompt action: (null)
dashboard
dashboard...
|
46851
|
|
10783
|
215
|
1
|
2026-04-14T08:58:55.375915+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776157135375_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> D AjReports(J AvatarcalendarD ConferenceD Crm>MImport> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsserwice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActvtvuistener.ono© ActivityLogged.phpc) AutomatedRenorscalloackoerwce.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,258486878889100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' = $this->reportUvid,1):lecurlin$prompt = $automatedReport->getAskAnythingPrompt();if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45'aucomatedkeporcuu1d = schis->reporcuuld,1);recurny$this->reportResult = $reportService->createReportResult(autona tedReport: SautonatedRepontdata: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' => AutomatedReportsService::MEDIA_TVF56SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: SsavedSearch,user: $creator,):$logger→>info(self::LOG_PREFIX . ' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {Sthis->failReport@ reason: AutomatedReportResult::REASOI$logger->info(self::LOG_PREFIX .' Not enough activit:'automatedReportUuid' => $this->reportUvid,Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log4 console [EUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SIAGING© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN221A Yclass AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loccerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspubLic tuncuion gecAculvity-asrorsavedsearcneSearch SsavedSearch,user puser.): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),$user->getTimezone()ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AsKLiminnxReRQrt] Fetched activity IDs for saved search', ['saved_search_id' => $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count' => count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...}j Support Daily • in 3h 2mAL RequestGenerateAskJiminnyReportJobTest v100% C•Tue 14 Apr 11:58:55CascadeFixing ReportControlle• Automated Report N• Automated Report L+D ...3. Activity fetch — [AskJiminnyReport] (from AskJiminnyReportActivityService)[AskJiminnyReport] Fetched activity IDs for saved searchSavea search lo user lo aculvity countunen immealalely aner in tne od[AskJiminnyReport:Generatel Fetched activity IDsauconacedkeporcuuld, actlvicycount4a. Failure path (< 1 activity):LAskJiminnyReport:Generatel Not enough activities, skippecautomatedReportUuid, activityCountThe AutomatedReportResult gets status=failed, reason=REASON_NOT_ENOUGH_ACTIVITIES.4b. Error path (exception):[AskJiminnyReport:Generatel ErrorautomatedReportUuid, reportUuid, code, messageWhat's missing for debuggingThe logs tell you count but not which filters were applied from the saved search. When a report fails with 0activities, you can't see why - what the saved search filters were, what date range was used, or what requestParams were bulltTwo gaps:1. AskJiminnyReportActivityService - the requestParams built from the saved search are not logged (only acalvity count2. RequestGenerateAskJiminnyReportJob - payload is only logged at "Request sent" (line 132-136), which isafter the activity count gate - so if we fail at count check, we never see the payloadIcan add loaaina to expose the apolied filters and the actual activity IDs when the count is low. Want me to addthat?Askino •uestion• What would you like to improve?What would you like to improve?SkipLoo tne aoolee Tters recuestrarams)rrom the saveo searchAdd filter params to the existing log in AskJiminnyReportActivityService so you can see exactly what filters wereusea wnen u acuvilles are returneeLog actual activity IDs when count is lowAlso log the activity IDs themselves (not just the count) so you can inspect which specific calls were or weren'tInc ludedbolLog filters + activity IDs in AskJiminnyReportActivityServiceActually I see that activities in on demand using the same filter returs some activities. Where is it? But in+ <> Code Claude Sonnet 4.6winasun leams48:40uir-o( 4 spaces...
|
NULL
|
-8713278096691389216
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny K vToolsWindowHelpProjectv© DeviceRepository.php© ElasticActivityRepository.pl© EmailMessageRepository.p© GenericAiPromptRepositor:© GroupRepository.php(C) InboxEmailBatchRepositon)InboxRepository.php© InvitationRepository.php© JobRepository.php© LanguageRepository.php© MomentRepository.php© NotificationRepository.php© ParticipantRepository.php© ParticipantSpeechReposito© ParticipantStatsRepository© PlaybookCategoryRepositc© PlaybookRepository.php® PlaylistActivityRepository.fPlaylistRepository.phpPlaylistShareRepository.ph© QuestionRepository.php© RoleChangeEventRepositor© RoleRepository.php© SearchRepository.php© SnapshotRepository.php© SocialAccountRepository.p© StageRepository.php© SubscriptionSetRepository.TaskRepository.php© TeamAiContextRepository.TeamDomainsRepository.p©TeamInsightsRepository.pt©TeamRepository.php©ThemeRepository.php© TimezoneRepository.php© TopicRepository.php© TopicTriggerRepository.ph© TrackRepository.php© TranscriptionModelLocaleF© TranscriptionRepository.phC) TranscriptionSummarvRep© UserRepository.php© VocabularyRepository.pnp> D Rulesv D Services> [ Activity> D AjReports(J AvatarcalendarD ConferenceD Crm>MImport> MInternalv D Kioskv _ AutomatedReports© ActivityTypeService.© AskJiminnyReportAc© AutomatedReportsCi© AutomatedReportsSt© ReportController.php© JiminnyDebugCommand.php© AutomatedReportsSendCommand.phpC AutomatedReportsCommand.php© AddLayoutEntities.php© Team.phpAutomaleakeporsserwice.ong© AutomatedReportsRepository.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.phpCrealeAcuivilyLogqedbvent.ono(C) User?llorActvtvuistener.ono© ActivityLogged.phpc) AutomatedRenorscalloackoerwce.onv© RequestGenerateAskJiminnyReportJob.php x(©) RequestGenerateReportJob.php(C) AutomatedReportResult.php© AutomatedReport.phpclass RequestGenerateAskJiminnyReportJob implements opublic function handle(1):У3 ^v,258486878889100101102103104105106107110111.112return;ssavedsearcn = pautomatedkeport->gecsavedsearcnohif (SsavedSearch === null) &sLogger->warnangtsecr..Luo_Pkeria • Skipped, Saved $36'automatedReportUuid' = $this->reportUvid,1):lecurlin$prompt = $automatedReport->getAskAnythingPrompt();if ($prompt === null) {$logger->warning(self::LOG_PREFIX . ' Skipped, ask an45'aucomatedkeporcuu1d = schis->reporcuuld,1);recurny$this->reportResult = $reportService->createReportResult(autona tedReport: SautonatedRepontdata: ['status' => AutomatedReportResult::STATUS_DEFAULT,'media_type' => AutomatedReportsService::MEDIA_TVF56SactivityIds = $activityService->getActivityIdsForSavedSe& 60savedSearch: SsavedSearch,user: $creator,):$logger→>info(self::LOG_PREFIX . ' Fetched activity IDs','automatedReportUvid' = $this->reportUvid,'activityCount' => count($activityIds),I);if (count($activityIds) < self::MIN_ACTIVITIES_COUNT) {Sthis->failReport@ reason: AutomatedReportResult::REASOI$logger->info(self::LOG_PREFIX .' Not enough activit:'automatedReportUuid' => $this->reportUvid,Windsurf changelog 2.12.21: A new version is available. // View Changelog (today 10:33)= custom.log4 console [EUl= laravel.logA SF [jiminny@localhost]A HS_local [jiminny@localhost]console SIAGING© AskJiminnyReportActivityService.php xA console [PROD]© RequestGenerateAskJiminnyReportJobTest.phpN221A Yclass AskJiminnyReportActivityServiceprivate const int DEFAULT_TOP_ACTIVITIES_COUNT = 100;private const array [ENV_SECRET],ActivityActualDate::PARAM_END_DATE,ActivityUpdatedDate::PARAM_UPDATED_FROM,ActivityUpdatedDate: :PARAM_UPDATED_TO,ClosingPeriodFilter::KEY_START_DATE,ClosingPeriodFilter::KEY_END_DATE,public function __construct(private readonly ActivitySearch $activitySearch,private readonly ElasticActivityRepository $elasticRepository,orvare reaconuy Loccerinuertace "Lodder) 4...3/*** Fetch activity IDs for a saved search, passing its filters as-is to Criteria.* Date filters stored on the saved search are excluded; if no other filters exist,* no date constraint is applied - matching the behaviour of getContextForAskAnythingByFilter.* Oreturn string[] Activity IDspubLic tuncuion gecAculvity-asrorsavedsearcneSearch SsavedSearch,user puser.): array {$requestParams = $this->buildRequestParamsFromSearch($savedSearch, $user);$criteria = Criteria::createFromRequest(array_merge($requestParams, ['limit' => self::DEFAULT_TOP_ACTIVITIES_COUNT, 'page' => 1]),$user->getTimezone()ptilterser = schis-›aculvitysearch->gecunbemandrager1ltersec(scriter1a, suser:$activityIds = $this->elasticRepository->onDemandSearchIds0nly($user, $criteria, $filterSet);$this->logger→>info('[AsKLiminnxReRQrt] Fetched activity IDs for saved search', ['saved_search_id' => $savedSearch->getId(),'user_id' => $user-›getId(),'activity_count' => count($activityIds),1):return $activityIds;private function buildRequestParamsFromSearch(Search $savedSearch, User $user): arrayf...}j Support Daily • in 3h 2mAL RequestGenerateAskJiminnyReportJobTest v100% C•Tue 14 Apr 11:58:55CascadeFixing ReportControlle• Automated Report N• Automated Report L+D ...3. Activity fetch — [AskJiminnyReport] (from AskJiminnyReportActivityService)[AskJiminnyReport] Fetched activity IDs for saved searchSavea search lo user lo aculvity countunen immealalely aner in tne od[AskJiminnyReport:Generatel Fetched activity IDsauconacedkeporcuuld, actlvicycount4a. Failure path (< 1 activity):LAskJiminnyReport:Generatel Not enough activities, skippecautomatedReportUuid, activityCountThe AutomatedReportResult gets status=failed, reason=REASON_NOT_ENOUGH_ACTIVITIES.4b. Error path (exception):[AskJiminnyReport:Generatel ErrorautomatedReportUuid, reportUuid, code, messageWhat's missing for debuggingThe logs tell you count but not which filters were applied from the saved search. When a report fails with 0activities, you can't see why - what the saved search filters were, what date range was used, or what requestParams were bulltTwo gaps:1. AskJiminnyReportActivityService - the requestParams built from the saved search are not logged (only acalvity count2. RequestGenerateAskJiminnyReportJob - payload is only logged at "Request sent" (line 132-136), which isafter the activity count gate - so if we fail at count check, we never see the payloadIcan add loaaina to expose the apolied filters and the actual activity IDs when the count is low. Want me to addthat?Askino •uestion• What would you like to improve?What would you like to improve?SkipLoo tne aoolee Tters recuestrarams)rrom the saveo searchAdd filter params to the existing log in AskJiminnyReportActivityService so you can see exactly what filters wereusea wnen u acuvilles are returneeLog actual activity IDs when count is lowAlso log the activity IDs themselves (not just the count) so you can inspect which specific calls were or weren'tInc ludedbolLog filters + activity IDs in AskJiminnyReportActivityServiceActually I see that activities in on demand using the same filter returs some activities. Where is it? But in+ <> Code Claude Sonnet 4.6winasun leams48:40uir-o( 4 spaces...
|
10782
|
|
42937
|
915
|
46
|
2026-04-17T07:44:27.260847+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776411867260_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditFV faVsco.s vProjectvM-INIERNAL WE PhpStormFileEditFV faVsco.s vProjectvM-INIERNAL WE.HOOK S-1UPEjiminny_storageM+Icenses.moM Makefile0 package-lock.jsonphostan.neon.dist= phpstan-baseline.neon<phpunit.xmlTe raw_sql_query.sqlM+ README.mdsonar-project.properties=test.py‹> Untitled Diagram.xmlus vetur.config.jsM+ WEbnOOK HILICKING_IMPLE› ih External Librariesv E° Scratches and Consolesv D Database ConsolesV AEUA console [EU]A DEAL RISKS [EU]A DI [EU]ViewNavigateCodeLaravelRefactorToolsWindowHelp#11894 on JY-18909-automated-reports-ask-jiminny k ~© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.php ReportController.php© TokenBuilder.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© CreateActivityLoggedEvent.php© UserPilotActivityListener.php©ActivityLogged.php© AutomatedReportsCallbackService.php€ OpportunitySyncTrait.php x© AutomatedReportResult.php© AutomatedReport.phptrait OpportunitySyncTrait2 usages838839840841844845private function build0pportunityData(array $properties,?int $accountId,?BusinessProcess $businessProcess.roade ostaoe): array {$ownerId = null;845846847848849850$profile = null;if (! empty($properties['hubspot_owner_id'])) {$ownerId = $properties['hubspot_owner_id'];$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, (string) $ownerId);© TeamSetupController.phpphp api.phpAutomatedReportsRepository.php© RequestGenerateAskJiminnyReportJob.phpFilesystem.php© AutomatedReportsCommand.php© CreateHeldActivityEvent.php• TrackProviderInstalledEvent.php© RequestGenerateReportJob.php© SyncOpportunity.php432 ×2 M19 ^shame = "unknown";if (isset($properties['dealname'])) {$name = mb_strimwidth($propertiesl'dealname'],start:0, width:|128);ServicesOutputfb jiminny.opportunitiesv D DatabaseV AEUc consoe s4vomsfị crm_configurations 1 s 504 msv A jiminny@localhost4 SFA HS_localV A PROD4, console 1 s 806 msV A STAGINGA console,, DockerTrow yTx: Auto vQEEA®uvid (UUID)[ team_idC crm_configuration_idE account_idOE stage_idI stage_updated_atE record_type_idcrm_provider_idEuser_idI owner_id4 nameI valueI currency_codeD is_closed0 is_wonI close_dateI probability• forecast_categoryI deleted_atI created_atI remotely_created_at• updated_atI type759434944 00704-7070-9000-2070-97979 75205459367174001Hlo,?2026-04-17 07:42:273706580297582411489352480053National Grid UK - SI Digital Lands...70700.002026-07-03Best CaseSnULl>2026-03-16 16:53:142026-05-16 16:191452026-04-17 07:42:27SnULLlabl• Backend Chapter • 46 m left100% C•8 • Fri 17 Apr 10:44:27AutomatedRenortsCommandTest= custom.log= laravel.logA SF ljiminny@localhost]C" scratch_1.jsonV connect.vueV Onboard.vue& Hs local liminnyalocalnostA console (EU] Xi crm_configurations (EU]¿ console IPRODI& consoe STAGING1578115791580E1581=108415831584=15851586=[CREDIT_CARD] vX:Auto vPlaygroundseLect * Trom teams where 1d = 350, # OW mselect * tron crn contlourarions where 10 = 4/.Ma lminnv v026 49 421 X3 X 102 ^u.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t1..n<->1: on t.id = u.team_idWHERE u.team_id = 556 and sa.provider = 'integration-app';select * from opportunities where id = 7594349;• :-CsVvI row retrieved startina trom 1in /50 ms execution: 113 ms, Telching: o3/ ms.winasun leamsloso.l ult-o4 spaces...
|
NULL
|
-8713265380943872424
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditFV faVsco.s vProjectvM-INIERNAL WE PhpStormFileEditFV faVsco.s vProjectvM-INIERNAL WE.HOOK S-1UPEjiminny_storageM+Icenses.moM Makefile0 package-lock.jsonphostan.neon.dist= phpstan-baseline.neon<phpunit.xmlTe raw_sql_query.sqlM+ README.mdsonar-project.properties=test.py‹> Untitled Diagram.xmlus vetur.config.jsM+ WEbnOOK HILICKING_IMPLE› ih External Librariesv E° Scratches and Consolesv D Database ConsolesV AEUA console [EU]A DEAL RISKS [EU]A DI [EU]ViewNavigateCodeLaravelRefactorToolsWindowHelp#11894 on JY-18909-automated-reports-ask-jiminny k ~© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.php ReportController.php© TokenBuilder.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© CreateActivityLoggedEvent.php© UserPilotActivityListener.php©ActivityLogged.php© AutomatedReportsCallbackService.php€ OpportunitySyncTrait.php x© AutomatedReportResult.php© AutomatedReport.phptrait OpportunitySyncTrait2 usages838839840841844845private function build0pportunityData(array $properties,?int $accountId,?BusinessProcess $businessProcess.roade ostaoe): array {$ownerId = null;845846847848849850$profile = null;if (! empty($properties['hubspot_owner_id'])) {$ownerId = $properties['hubspot_owner_id'];$profile = $this->crmEntityRepository->findProfileByExternalId($this->config, (string) $ownerId);© TeamSetupController.phpphp api.phpAutomatedReportsRepository.php© RequestGenerateAskJiminnyReportJob.phpFilesystem.php© AutomatedReportsCommand.php© CreateHeldActivityEvent.php• TrackProviderInstalledEvent.php© RequestGenerateReportJob.php© SyncOpportunity.php432 ×2 M19 ^shame = "unknown";if (isset($properties['dealname'])) {$name = mb_strimwidth($propertiesl'dealname'],start:0, width:|128);ServicesOutputfb jiminny.opportunitiesv D DatabaseV AEUc consoe s4vomsfị crm_configurations 1 s 504 msv A jiminny@localhost4 SFA HS_localV A PROD4, console 1 s 806 msV A STAGINGA console,, DockerTrow yTx: Auto vQEEA®uvid (UUID)[ team_idC crm_configuration_idE account_idOE stage_idI stage_updated_atE record_type_idcrm_provider_idEuser_idI owner_id4 nameI valueI currency_codeD is_closed0 is_wonI close_dateI probability• forecast_categoryI deleted_atI created_atI remotely_created_at• updated_atI type759434944 00704-7070-9000-2070-97979 75205459367174001Hlo,?2026-04-17 07:42:273706580297582411489352480053National Grid UK - SI Digital Lands...70700.002026-07-03Best CaseSnULl>2026-03-16 16:53:142026-05-16 16:191452026-04-17 07:42:27SnULLlabl• Backend Chapter • 46 m left100% C•8 • Fri 17 Apr 10:44:27AutomatedRenortsCommandTest= custom.log= laravel.logA SF ljiminny@localhost]C" scratch_1.jsonV connect.vueV Onboard.vue& Hs local liminnyalocalnostA console (EU] Xi crm_configurations (EU]¿ console IPRODI& consoe STAGING1578115791580E1581=108415831584=15851586=[CREDIT_CARD] vX:Auto vPlaygroundseLect * Trom teams where 1d = 350, # OW mselect * tron crn contlourarions where 10 = 4/.Ma lminnv v026 49 421 X3 X 102 ^u.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable_idJOIN teams t1..n<->1: on t.id = u.team_idWHERE u.team_id = 556 and sa.provider = 'integration-app';select * from opportunities where id = 7594349;• :-CsVvI row retrieved startina trom 1in /50 ms execution: 113 ms, Telching: o3/ ms.winasun leamsloso.l ult-o4 spaces...
|
NULL
|
|
26489
|
561
|
74
|
2026-04-15T13:23:58.750648+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776259438750_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
259525191002Imperial AgeBuild Watch Tower (Cost: 3 259525191002Imperial AgeBuild Watch Tower (Cost: 35 M7, 125Tower with a ranged attack. Units cangarrison inside for protection. RangedSoldiers and Villagers shoot additionalprojectiles. Strong vs. Ranged Soldiers. Weakvs. units at close range, especially rams.Upgrades: line of sight (Town Center);attack, range (Blacksmith); attack, HP,armor, ship attack; to Guard T'ower(University).1020(Hotkey: F)Lumberjackkoval likmkas (Britons)T 0+1/0+234/405 Magnus Olafsson: 11910/11910&NV2 Rajyapala: 11468/11468G IV1 kovaliklukas: 9475/94758 Almish Yiltawar: 8809/8809 ©IV6 Lászl6 I: 8564/8564 IV7 Maximilian of Habsburg: 7380/7380 IV4 Louis VI: 6998/69983 Huascár: 6306/6306 B IV...
|
NULL
|
-8713005371455331347
|
NULL
|
visual_change
|
ocr
|
NULL
|
259525191002Imperial AgeBuild Watch Tower (Cost: 3 259525191002Imperial AgeBuild Watch Tower (Cost: 35 M7, 125Tower with a ranged attack. Units cangarrison inside for protection. RangedSoldiers and Villagers shoot additionalprojectiles. Strong vs. Ranged Soldiers. Weakvs. units at close range, especially rams.Upgrades: line of sight (Town Center);attack, range (Blacksmith); attack, HP,armor, ship attack; to Guard T'ower(University).1020(Hotkey: F)Lumberjackkoval likmkas (Britons)T 0+1/0+234/405 Magnus Olafsson: 11910/11910&NV2 Rajyapala: 11468/11468G IV1 kovaliklukas: 9475/94758 Almish Yiltawar: 8809/8809 ©IV6 Lászl6 I: 8564/8564 IV7 Maximilian of Habsburg: 7380/7380 IV4 Louis VI: 6998/69983 Huascár: 6306/6306 B IV...
|
NULL
|
|
55685
|
1199
|
25
|
2026-04-20T10:01:35.022399+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776679295022_m1.jpg...
|
PhpStorm
|
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Checkout
New Branch from 'JY-18909-automated-r Checkout
New Branch from 'JY-18909-automated-reports-ask-jiminny'…
Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'
Checkout and Update
Compare with 'JY-20553-debug-crm-sync-delays'
Show Diff with Working Tree
Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'
Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'
New Worktree from 'JY-18909-automated-reports-ask-jiminny'…
Update
Push…
Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'
Rename…
F2
Delete...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Checkout","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"New Branch from 'JY-18909-automated-reports-ask-jiminny'…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Checkout and Update","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Compare with 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Show Diff with Working Tree","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"New Worktree from 'JY-18909-automated-reports-ask-jiminny'…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Update","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Push…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Rename…","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"F2","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.0055555557,"height":0.024444444},"role_description":"text"},{"role":"AXStaticText","text":"Delete","depth":5,"bounds":{"left":0.0,"top":0.0,"width":0.027777778,"height":0.024444444},"role_description":"text"}]...
|
-8712610695568288025
|
6569576623045702348
|
click
|
accessibility
|
NULL
|
Checkout
New Branch from 'JY-18909-automated-r Checkout
New Branch from 'JY-18909-automated-reports-ask-jiminny'…
Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'
Checkout and Update
Compare with 'JY-20553-debug-crm-sync-delays'
Show Diff with Working Tree
Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'
Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'
New Worktree from 'JY-18909-automated-reports-ask-jiminny'…
Update
Push…
Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'
Rename…
F2
Delete...
|
NULL
|
|
55686
|
1200
|
41
|
2026-04-20T10:01:35.022383+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776679295022_m2.jpg...
|
PhpStorm
|
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Checkout
New Branch from 'JY-18909-automated-r Checkout
New Branch from 'JY-18909-automated-reports-ask-jiminny'…
Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'
Checkout and Update
Compare with 'JY-20553-debug-crm-sync-delays'
Show Diff with Working Tree
Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'
Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'
New Worktree from 'JY-18909-automated-reports-ask-jiminny'…
Update
Push…
Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'
Rename…
F2
Delete...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Checkout","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"New Branch from 'JY-18909-automated-reports-ask-jiminny'…","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Checkout and Update","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Compare with 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Show Diff with Working Tree","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"New Worktree from 'JY-18909-automated-reports-ask-jiminny'…","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Update","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Push…","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Rename…","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"F2","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.0026595744,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"Delete","depth":5,"bounds":{"left":0.27027926,"top":1.0,"width":0.013297873,"height":0.0},"role_description":"text"}]...
|
-8712610695568288025
|
6569576623045702348
|
click
|
accessibility
|
NULL
|
Checkout
New Branch from 'JY-18909-automated-r Checkout
New Branch from 'JY-18909-automated-reports-ask-jiminny'…
Checkout and Rebase onto 'JY-20553-debug-crm-sync-delays'
Checkout and Update
Compare with 'JY-20553-debug-crm-sync-delays'
Show Diff with Working Tree
Rebase 'JY-20553-debug-crm-sync-delays' onto 'JY-18909-automated-reports-ask-jiminny'
Merge 'JY-18909-automated-reports-ask-jiminny' into 'JY-20553-debug-crm-sync-delays'
New Worktree from 'JY-18909-automated-reports-ask-jiminny'…
Update
Push…
Tracked Branch 'origin/JY-18909-automated-reports-ask-jiminny'
Rename…
F2
Delete...
|
55684
|
|
43600
|
927
|
7
|
2026-04-17T08:13:24.383156+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776413604383_m2.jpg...
|
Firefox
|
Meet - Daily - Processing — Work
|
True
|
meet.google.com/xpx-omah-rkn
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Workers | Datadog
Meet - Daily - Processing
Close Workers | Datadog
Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Workers | Datadog","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.018945312,"height":-0.045138836},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Meet - Daily - Processing","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.018945312,"height":-0.08263886},"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.23398438,"top":1.0,"width":0.005859375,"height":-0.08263886},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Ilian Kyuchukov (Presenting, annotating)","depth":12,"bounds":{"left":0.27558595,"top":1.0,"width":0.1015625,"height":-0.063194394},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ilian Kyuchukov (Presenting, annotating)","depth":13,"bounds":{"left":0.27558595,"top":1.0,"width":0.1015625,"height":-0.06388891},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":14,"bounds":{"left":0.7320312,"top":1.0,"width":0.023046875,"height":-0.05590272},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":21,"bounds":{"left":0.7476562,"top":1.0,"width":0.002734375,"height":-0.063194394},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":13,"bounds":{"left":0.75820315,"top":1.0,"width":0.0140625,"height":-0.05590272},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":16,"bounds":{"left":0.7597656,"top":1.0,"width":0.051171876,"height":-0.063194394},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":21,"bounds":{"left":0.7769531,"top":1.0,"width":0.015820313,"height":-0.063194394},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":20,"bounds":{"left":0.7757813,"top":1.0,"width":0.01328125,"height":-0.056597233},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Zoom in","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-8711802525295455623
|
-6461762226980455620
|
click
|
accessibility
|
NULL
|
Workers | Datadog
Meet - Daily - Processing
Close Workers | Datadog
Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things....
|
NULL
|
|
59188
|
1274
|
8
|
2026-04-20T13:31:50.394603+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776691910394_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Miestorislaal100% <78• Mon 20 Apr 16:31:50=8D• а 8+Mon 20 Ape 16:31GUSyncHubsporObjectsTest.testHandlSyncedAt~ProjectnporiconucisalchphpImportAccountButch.php© ImportOpportunityBatch.phpSyncContact.phpSyncOrmEnttiesTrait.phpService.phpSyncObjects.php3 SyndFieldsTrait.php 23.03.26, 10.50© Clent.php 20.04.26, 1430, 20.38 k8© DecorateActvity.php 23.03.26, 10.59,:( DeleteObjectsTrait, php 23.03.20, 10.M1© FieidDefinitions.php 23.03.26, 10.59, 6.© PayloadBullder.php 23.03.26, 10:39, 2.2© Profie php 23.03.26, 10.59, 1.97 k8© QueryBullder.php 20.0420, 14:16, 15.69© QueryHandier.php 20.0426, 14.16, 6.21© Queryterator.php 23.03.26, 1059,2.53©Queryßesults.php 23.03.26, 1059, 1.24Service,php 20.0428, 14.16, 134.23 V8 4Ччукококно кетико.paр 200420© BaseCient.php 23.03.26, 10.57, 2.19 kB©LayowtUpdatedListener.phpSyncOpportuniky.php(© SyncAccount.phpSyncProfieOpportunities.phpSyncOppoOpportunitySyncTrait.phpclass Service extends BaseService inplesents& LUKAS KOVMX +3)public function syncContact(string SonaTd): 2ContactSfselds & Sthl>getALlFieldsAsArroy(obitcttypt: 'contact"):1f (1 in_array( neeoe. "Ta", Stielos,stoct triue)) €Sm1s->109ger->info(*[Salesferce) Syne contact cancelled. Flelds are not avatlable.". I'crnig' »> Scrale,1):rofste-›getiserido,34mev 1 test passed 1 test tocal, 24 ms/opt/honebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann •Ssfcentaat = Stnis-2getRecord( coecitype "Contact', Scraio, Stielas):neturn Sthia->inportContact(SsfContact):Dcunancn Cieoworcehands/_/SyncOpportunity.php 3 resuts>syncOpportunitiesByOute(Sc)Service, Sirom, Sto, Soffset):222. Scot • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount « ScrmService-›syncOpportunities(SopportunitySyncParameters, Sutrategyl:› © SyncHlubspotActiveDeals.php 1 resunSyncOpportunitiesMissingFieidDutaCommand.php 1 resultapp/Console/Commands/Dealinsights 1 result©app/J0bs/Crm 4 results~ D app/Listeners/Crm 1 result• ©LayoutUpdatedListener.php 1 result70 Sthis-> sync Opportunities (Siayout);Istring Scraid,?int Soffset): void (1f (Scrmid) (J else (Sthis->synePeofileOppertunities(ScraService, Scraid, Sfros, Sto, Soffset);Sthis->syncOpportunitiesBy0ate(ScreService, Sfron, Sto, Soffset):private function syncProfileOpportunities(nterface ScraService,h shenn rout socenSymtony U UIt-aGalya DimitrovaStefka Stoyanova3 othersNikolay Nikolov4:31 PM | [Platform] Refinement ®Lukas Kovalik1:30:01...
|
NULL
|
-8711800613561916415
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Miestorislaal100% <78• Mon 20 Apr 16:31:50=8D• а 8+Mon 20 Ape 16:31GUSyncHubsporObjectsTest.testHandlSyncedAt~ProjectnporiconucisalchphpImportAccountButch.php© ImportOpportunityBatch.phpSyncContact.phpSyncOrmEnttiesTrait.phpService.phpSyncObjects.php3 SyndFieldsTrait.php 23.03.26, 10.50© Clent.php 20.04.26, 1430, 20.38 k8© DecorateActvity.php 23.03.26, 10.59,:( DeleteObjectsTrait, php 23.03.20, 10.M1© FieidDefinitions.php 23.03.26, 10.59, 6.© PayloadBullder.php 23.03.26, 10:39, 2.2© Profie php 23.03.26, 10.59, 1.97 k8© QueryBullder.php 20.0420, 14:16, 15.69© QueryHandier.php 20.0426, 14.16, 6.21© Queryterator.php 23.03.26, 1059,2.53©Queryßesults.php 23.03.26, 1059, 1.24Service,php 20.0428, 14.16, 134.23 V8 4Ччукококно кетико.paр 200420© BaseCient.php 23.03.26, 10.57, 2.19 kB©LayowtUpdatedListener.phpSyncOpportuniky.php(© SyncAccount.phpSyncProfieOpportunities.phpSyncOppoOpportunitySyncTrait.phpclass Service extends BaseService inplesents& LUKAS KOVMX +3)public function syncContact(string SonaTd): 2ContactSfselds & Sthl>getALlFieldsAsArroy(obitcttypt: 'contact"):1f (1 in_array( neeoe. "Ta", Stielos,stoct triue)) €Sm1s->109ger->info(*[Salesferce) Syne contact cancelled. Flelds are not avatlable.". I'crnig' »> Scrale,1):rofste-›getiserido,34mev 1 test passed 1 test tocal, 24 ms/opt/honebrew/Cellar/php/8.3.4/bin/phpTesting started at 11:54 ...PHPUnit 11.5.55 by Sebastian Bergnann •Ssfcentaat = Stnis-2getRecord( coecitype "Contact', Scraio, Stielas):neturn Sthia->inportContact(SsfContact):Dcunancn Cieoworcehands/_/SyncOpportunity.php 3 resuts>syncOpportunitiesByOute(Sc)Service, Sirom, Sto, Soffset):222. Scot • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount « ScrmService-›syncOpportunities(SopportunitySyncParameters, Sutrategyl:› © SyncHlubspotActiveDeals.php 1 resunSyncOpportunitiesMissingFieidDutaCommand.php 1 resultapp/Console/Commands/Dealinsights 1 result©app/J0bs/Crm 4 results~ D app/Listeners/Crm 1 result• ©LayoutUpdatedListener.php 1 result70 Sthis-> sync Opportunities (Siayout);Istring Scraid,?int Soffset): void (1f (Scrmid) (J else (Sthis->synePeofileOppertunities(ScraService, Scraid, Sfros, Sto, Soffset);Sthis->syncOpportunitiesBy0ate(ScreService, Sfron, Sto, Soffset):private function syncProfileOpportunities(nterface ScraService,h shenn rout socenSymtony U UIt-aGalya DimitrovaStefka Stoyanova3 othersNikolay Nikolov4:31 PM | [Platform] Refinement ®Lukas Kovalik1:30:01...
|
NULL
|
|
41960
|
890
|
13
|
2026-04-17T06:40:18.221334+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776408018221_m1.jpg...
|
PhpStorm
|
faVsco.js – console [PROD]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
4
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Storage;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\FileNotFoundException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class SendReportJob implements ShouldQueue, ShouldBeUnique
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Send Report]';
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
/**
* The maximum number of seconds the job should be allowed to run.
*
* @var int
*/
public int $timeout = 120;
/**
* Create a new job instance.
*
* @param string $reportUuid The UUID of the report to send
*/
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function handle(
LoggerInterface $logger,
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService
): void {
try {
$report = $automatedReportsService->getReportResult($this->reportUuid);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error getting report result', [
'uuid' => $this->reportUuid,
'exception' => $e->getMessage(),
]);
throw $e;
}
$logger->info(self::LOG_PREFIX . ' Processing report', [
'uuid' => $this->reportUuid,
'status' => $report->getStatusLabel(),
]);
$s3Path = $automatedReportsService->getMediaPath($report);
if ($s3Path === null) {
$logger->error(self::LOG_PREFIX . ' Report media path is null', [
'uuid' => $this->reportUuid,
'mediaType' => $report->getMediaType(),
]);
throw new FileNotFoundException('Report media path could not be resolved');
}
// Verify the file exists in S3
if (! Storage::disk('client-data-cloud')->exists($s3Path)) {
$logger->error(self::LOG_PREFIX . ' Report file not found in S3', [
'uuid' => $this->reportUuid,
's3Path' => $s3Path,
]);
throw new FileNotFoundException('Report file not found in S3');
}
try {
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
if (empty($validRecipients)) {
$logger->error(self::LOG_PREFIX . ' No valid recipients found', [
'uuid' => $this->reportUuid,
]);
throw new RuntimeException("No recipients found for report: {$this->reportUuid}");
}
// Get report metadata (same for all recipients)
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$isAskJiminny = $report->getReport()->isAskJiminnyReport();
// Track how many jobs were dispatched
$dispatchCount = 0;
// Dispatch a job for each recipient
foreach ($validRecipients as $recipient) {
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $this->reportUuid,
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: $isAskJiminny,
)
);
$dispatchCount++;
$logger->info(self::LOG_PREFIX . ' Dispatched mail job', [
'uuid' => $this->reportUuid,
'email' => $recipient['email'],
]);
}
$logger->info(self::LOG_PREFIX . ' Successfully dispatched mail jobs', [
'uuid' => $this->reportUuid,
'count' => $dispatchCount,
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error processing report', [
'uuid' => $this->reportUuid,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
// Get current attempt (1-indexed)
$attempt = $this->attempts();
if ($attempt < $this->tries) {
$delay = 30 * (2 ** ($attempt - 1)); // Exponential backoff: 30s, 60s
$logger->info(self::LOG_PREFIX . ' retry job, attempts: ' . $attempt, [
'delay' => $delay,
]);
$this->release($delay);
} else {
$this->fail($e);
}
}
}
public function failed(Throwable $exception): void
{
AutomatedReportResult::whereRaw('uuid = uuid_to_bin(?)', [$this->reportUuid])
->update(['status' => AutomatedReportResult::STATUS_FAILED]);
}
/**
* Get a unique ID for the job.
*
* @return string
*/
public function uniqueId(): string
{
return $this->reportUuid;
}
}...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"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.0,"top":0.0,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Facades\\Storage;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\FileNotFoundException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass SendReportJob implements ShouldQueue, ShouldBeUnique\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Send Report]';\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n /**\n * The maximum number of seconds the job should be allowed to run.\n *\n * @var int\n */\n public int $timeout = 120;\n\n /**\n * Create a new job instance.\n *\n * @param string $reportUuid The UUID of the report to send\n */\n public function __construct(private readonly string $reportUuid)\n {\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function handle(\n LoggerInterface $logger,\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService\n ): void {\n try {\n $report = $automatedReportsService->getReportResult($this->reportUuid);\n } catch (Throwable $e) {\n $logger->error(self::LOG_PREFIX . ' Error getting report result', [\n 'uuid' => $this->reportUuid,\n 'exception' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $logger->info(self::LOG_PREFIX . ' Processing report', [\n 'uuid' => $this->reportUuid,\n 'status' => $report->getStatusLabel(),\n ]);\n\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n if ($s3Path === null) {\n $logger->error(self::LOG_PREFIX . ' Report media path is null', [\n 'uuid' => $this->reportUuid,\n 'mediaType' => $report->getMediaType(),\n ]);\n\n throw new FileNotFoundException('Report media path could not be resolved');\n }\n\n // Verify the file exists in S3\n if (! Storage::disk('client-data-cloud')->exists($s3Path)) {\n $logger->error(self::LOG_PREFIX . ' Report file not found in S3', [\n 'uuid' => $this->reportUuid,\n 's3Path' => $s3Path,\n ]);\n\n throw new FileNotFoundException('Report file not found in S3');\n }\n\n try {\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n if (empty($validRecipients)) {\n $logger->error(self::LOG_PREFIX . ' No valid recipients found', [\n 'uuid' => $this->reportUuid,\n ]);\n\n throw new RuntimeException(\"No recipients found for report: {$this->reportUuid}\");\n }\n\n // Get report metadata (same for all recipients)\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $isAskJiminny = $report->getReport()->isAskJiminnyReport();\n\n // Track how many jobs were dispatched\n $dispatchCount = 0;\n\n // Dispatch a job for each recipient\n foreach ($validRecipients as $recipient) {\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $this->reportUuid,\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: $isAskJiminny,\n )\n );\n $dispatchCount++;\n\n $logger->info(self::LOG_PREFIX . ' Dispatched mail job', [\n 'uuid' => $this->reportUuid,\n 'email' => $recipient['email'],\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' Successfully dispatched mail jobs', [\n 'uuid' => $this->reportUuid,\n 'count' => $dispatchCount,\n ]);\n } catch (Throwable $e) {\n $logger->error(self::LOG_PREFIX . ' Error processing report', [\n 'uuid' => $this->reportUuid,\n 'error' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n // Get current attempt (1-indexed)\n $attempt = $this->attempts();\n\n if ($attempt < $this->tries) {\n $delay = 30 * (2 ** ($attempt - 1)); // Exponential backoff: 30s, 60s\n\n $logger->info(self::LOG_PREFIX . ' retry job, attempts: ' . $attempt, [\n 'delay' => $delay,\n ]);\n\n $this->release($delay);\n } else {\n $this->fail($e);\n }\n }\n }\n\n public function failed(Throwable $exception): void\n {\n AutomatedReportResult::whereRaw('uuid = uuid_to_bin(?)', [$this->reportUuid])\n ->update(['status' => AutomatedReportResult::STATUS_FAILED]);\n }\n\n /**\n * Get a unique ID for the job.\n *\n * @return string\n */\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Jobs\\AutomatedReports;\n\nuse Illuminate\\Bus\\Queueable;\nuse Illuminate\\Contracts\\Queue\\ShouldBeUnique;\nuse Illuminate\\Contracts\\Queue\\ShouldQueue;\nuse Illuminate\\Foundation\\Bus\\Dispatchable;\nuse Illuminate\\Queue\\InteractsWithQueue;\nuse Illuminate\\Support\\Facades\\Storage;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Exceptions\\FileNotFoundException;\nuse Jiminny\\Exceptions\\RuntimeException;\nuse Jiminny\\Jobs\\JobDispatcherInterface;\nuse Jiminny\\Models\\AutomatedReportResult;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Throwable;\n\nclass SendReportJob implements ShouldQueue, ShouldBeUnique\n{\n use Dispatchable;\n use InteractsWithQueue;\n use Queueable;\n\n /**\n * Log prefix for all log messages\n */\n private const string LOG_PREFIX = '[Send Report]';\n\n /**\n * The number of times the job may be attempted.\n *\n * @var int\n */\n public int $tries = 2;\n\n /**\n * The maximum number of seconds the job should be allowed to run.\n *\n * @var int\n */\n public int $timeout = 120;\n\n /**\n * Create a new job instance.\n *\n * @param string $reportUuid The UUID of the report to send\n */\n public function __construct(private readonly string $reportUuid)\n {\n $this->onQueue(Constants::QUEUE_ANALYTICS_LOW);\n }\n\n public function handle(\n LoggerInterface $logger,\n JobDispatcherInterface $jobDispatcher,\n AutomatedReportsService $automatedReportsService\n ): void {\n try {\n $report = $automatedReportsService->getReportResult($this->reportUuid);\n } catch (Throwable $e) {\n $logger->error(self::LOG_PREFIX . ' Error getting report result', [\n 'uuid' => $this->reportUuid,\n 'exception' => $e->getMessage(),\n ]);\n\n throw $e;\n }\n\n $logger->info(self::LOG_PREFIX . ' Processing report', [\n 'uuid' => $this->reportUuid,\n 'status' => $report->getStatusLabel(),\n ]);\n\n $s3Path = $automatedReportsService->getMediaPath($report);\n\n if ($s3Path === null) {\n $logger->error(self::LOG_PREFIX . ' Report media path is null', [\n 'uuid' => $this->reportUuid,\n 'mediaType' => $report->getMediaType(),\n ]);\n\n throw new FileNotFoundException('Report media path could not be resolved');\n }\n\n // Verify the file exists in S3\n if (! Storage::disk('client-data-cloud')->exists($s3Path)) {\n $logger->error(self::LOG_PREFIX . ' Report file not found in S3', [\n 'uuid' => $this->reportUuid,\n 's3Path' => $s3Path,\n ]);\n\n throw new FileNotFoundException('Report file not found in S3');\n }\n\n try {\n $validRecipients = $automatedReportsService->getValidRecipientUsers(\n $report->getReport(),\n includeJiminny: true,\n );\n\n if (empty($validRecipients)) {\n $logger->error(self::LOG_PREFIX . ' No valid recipients found', [\n 'uuid' => $this->reportUuid,\n ]);\n\n throw new RuntimeException(\"No recipients found for report: {$this->reportUuid}\");\n }\n\n // Get report metadata (same for all recipients)\n $fileName = $automatedReportsService->getReportFileName($report);\n $typeName = $report->getReport()->getCustomName()\n ?? $automatedReportsService->getReportTypeName($report);\n $teamsName = $automatedReportsService->getReportTeamsName($report);\n $periodName = $automatedReportsService->getReportPeriodName($report);\n $isAskJiminny = $report->getReport()->isAskJiminnyReport();\n\n // Track how many jobs were dispatched\n $dispatchCount = 0;\n\n // Dispatch a job for each recipient\n foreach ($validRecipients as $recipient) {\n $jobDispatcher->dispatch(\n new SendReportMailJob(\n reportUuid: $this->reportUuid,\n s3Path: $s3Path,\n recipientEmail: $recipient['email'],\n recipientName: $recipient['name'] ?? null,\n fileName: $fileName,\n typeName: $typeName,\n teamsName: $teamsName,\n periodName: $periodName,\n isAskJiminny: $isAskJiminny,\n )\n );\n $dispatchCount++;\n\n $logger->info(self::LOG_PREFIX . ' Dispatched mail job', [\n 'uuid' => $this->reportUuid,\n 'email' => $recipient['email'],\n ]);\n }\n\n $logger->info(self::LOG_PREFIX . ' Successfully dispatched mail jobs', [\n 'uuid' => $this->reportUuid,\n 'count' => $dispatchCount,\n ]);\n } catch (Throwable $e) {\n $logger->error(self::LOG_PREFIX . ' Error processing report', [\n 'uuid' => $this->reportUuid,\n 'error' => $e->getMessage(),\n 'trace' => $e->getTraceAsString(),\n ]);\n\n // Get current attempt (1-indexed)\n $attempt = $this->attempts();\n\n if ($attempt < $this->tries) {\n $delay = 30 * (2 ** ($attempt - 1)); // Exponential backoff: 30s, 60s\n\n $logger->info(self::LOG_PREFIX . ' retry job, attempts: ' . $attempt, [\n 'delay' => $delay,\n ]);\n\n $this->release($delay);\n } else {\n $this->fail($e);\n }\n }\n }\n\n public function failed(Throwable $exception): void\n {\n AutomatedReportResult::whereRaw('uuid = uuid_to_bin(?)', [$this->reportUuid])\n ->update(['status' => AutomatedReportResult::STATUS_FAILED]);\n }\n\n /**\n * Get a unique ID for the job.\n *\n * @return string\n */\n public function uniqueId(): string\n {\n return $this->reportUuid;\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8711448017265131450
|
-8572157592184991133
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Code changed:
Hide
Sync Changes
Hide This Notification
4
1
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Jobs\AutomatedReports;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldBeUnique;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Foundation\Bus\Dispatchable;
use Illuminate\Queue\InteractsWithQueue;
use Illuminate\Support\Facades\Storage;
use Jiminny\Component\Queue\Constants;
use Jiminny\Exceptions\FileNotFoundException;
use Jiminny\Exceptions\RuntimeException;
use Jiminny\Jobs\JobDispatcherInterface;
use Jiminny\Models\AutomatedReportResult;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Throwable;
class SendReportJob implements ShouldQueue, ShouldBeUnique
{
use Dispatchable;
use InteractsWithQueue;
use Queueable;
/**
* Log prefix for all log messages
*/
private const string LOG_PREFIX = '[Send Report]';
/**
* The number of times the job may be attempted.
*
* @var int
*/
public int $tries = 2;
/**
* The maximum number of seconds the job should be allowed to run.
*
* @var int
*/
public int $timeout = 120;
/**
* Create a new job instance.
*
* @param string $reportUuid The UUID of the report to send
*/
public function __construct(private readonly string $reportUuid)
{
$this->onQueue(Constants::QUEUE_ANALYTICS_LOW);
}
public function handle(
LoggerInterface $logger,
JobDispatcherInterface $jobDispatcher,
AutomatedReportsService $automatedReportsService
): void {
try {
$report = $automatedReportsService->getReportResult($this->reportUuid);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error getting report result', [
'uuid' => $this->reportUuid,
'exception' => $e->getMessage(),
]);
throw $e;
}
$logger->info(self::LOG_PREFIX . ' Processing report', [
'uuid' => $this->reportUuid,
'status' => $report->getStatusLabel(),
]);
$s3Path = $automatedReportsService->getMediaPath($report);
if ($s3Path === null) {
$logger->error(self::LOG_PREFIX . ' Report media path is null', [
'uuid' => $this->reportUuid,
'mediaType' => $report->getMediaType(),
]);
throw new FileNotFoundException('Report media path could not be resolved');
}
// Verify the file exists in S3
if (! Storage::disk('client-data-cloud')->exists($s3Path)) {
$logger->error(self::LOG_PREFIX . ' Report file not found in S3', [
'uuid' => $this->reportUuid,
's3Path' => $s3Path,
]);
throw new FileNotFoundException('Report file not found in S3');
}
try {
$validRecipients = $automatedReportsService->getValidRecipientUsers(
$report->getReport(),
includeJiminny: true,
);
if (empty($validRecipients)) {
$logger->error(self::LOG_PREFIX . ' No valid recipients found', [
'uuid' => $this->reportUuid,
]);
throw new RuntimeException("No recipients found for report: {$this->reportUuid}");
}
// Get report metadata (same for all recipients)
$fileName = $automatedReportsService->getReportFileName($report);
$typeName = $report->getReport()->getCustomName()
?? $automatedReportsService->getReportTypeName($report);
$teamsName = $automatedReportsService->getReportTeamsName($report);
$periodName = $automatedReportsService->getReportPeriodName($report);
$isAskJiminny = $report->getReport()->isAskJiminnyReport();
// Track how many jobs were dispatched
$dispatchCount = 0;
// Dispatch a job for each recipient
foreach ($validRecipients as $recipient) {
$jobDispatcher->dispatch(
new SendReportMailJob(
reportUuid: $this->reportUuid,
s3Path: $s3Path,
recipientEmail: $recipient['email'],
recipientName: $recipient['name'] ?? null,
fileName: $fileName,
typeName: $typeName,
teamsName: $teamsName,
periodName: $periodName,
isAskJiminny: $isAskJiminny,
)
);
$dispatchCount++;
$logger->info(self::LOG_PREFIX . ' Dispatched mail job', [
'uuid' => $this->reportUuid,
'email' => $recipient['email'],
]);
}
$logger->info(self::LOG_PREFIX . ' Successfully dispatched mail jobs', [
'uuid' => $this->reportUuid,
'count' => $dispatchCount,
]);
} catch (Throwable $e) {
$logger->error(self::LOG_PREFIX . ' Error processing report', [
'uuid' => $this->reportUuid,
'error' => $e->getMessage(),
'trace' => $e->getTraceAsString(),
]);
// Get current attempt (1-indexed)
$attempt = $this->attempts();
if ($attempt < $this->tries) {
$delay = 30 * (2 ** ($attempt - 1)); // Exponential backoff: 30s, 60s
$logger->info(self::LOG_PREFIX . ' retry job, attempts: ' . $attempt, [
'delay' => $delay,
]);
$this->release($delay);
} else {
$this->fail($e);
}
}
}
public function failed(Throwable $exception): void
{
AutomatedReportResult::whereRaw('uuid = uuid_to_bin(?)', [$this->reportUuid])
->update(['status' => AutomatedReportResult::STATUS_FAILED]);
}
/**
* Get a unique ID for the job.
*
* @return string
*/
public function uniqueId(): string
{
return $this->reportUuid;
}
}...
|
NULL
|
|
17574
|
379
|
32
|
2026-04-14T15:52:44.128508+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776181964128_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
1751002005/10Dark Age--Cow Found---Villager Create 1751002005/10Dark Age--Cow Found---Villager Created--- House Built--Right-click to herd this animal to your TownCenter or Mill for food.6 Mindaugas: 200/2003 Bird Jaguar: 193/1938 Ashikaga Takauji: 190/1905 Honorius: 190/1904 Siddhraj Jaisingh: 187/1872 Anccu Hualloc: 181/1817 Basil the Macedonian: 180/1801 kovaliklukas: 180/180...
|
NULL
|
-8711317798001215094
|
NULL
|
visual_change
|
ocr
|
NULL
|
1751002005/10Dark Age--Cow Found---Villager Create 1751002005/10Dark Age--Cow Found---Villager Created--- House Built--Right-click to herd this animal to your TownCenter or Mill for food.6 Mindaugas: 200/2003 Bird Jaguar: 193/1938 Ashikaga Takauji: 190/1905 Honorius: 190/1904 Siddhraj Jaisingh: 187/1872 Anccu Hualloc: 181/1817 Basil the Macedonian: 180/1801 kovaliklukas: 180/180...
|
17573
|
|
79626
|
2067
|
7
|
2026-04-24T16:42:13.370835+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777048933370_m1.jpg...
|
PhpStorm
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Activity MonitorFileEditViewWindow• 81Help‹$0(23AP Activity MonitorFileEditViewWindow• 81Help‹$0(23APP (-zsh)APP (-zsh)DOCKERDEV (-zsh)882*3What's next:Try Dockerseamless, persistent debugging tools in any containeror image + docker debugdocker_1amp_1at [URL_WITH_CREDENTIALS] (JY-20508-notify-before-AJ-report-expiration) $ csfixdocker exec-it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php-v--using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski andcontributors.PHPruntime:8.3.30Running analysis on 7 coreswith 10 files perprocess.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loaded config default from".php-cs-fixer.dist.php".5623/5623100%1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation)begin diff/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php+++/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php-40,7 +40,7AutomatedReportsRepository SautomatedReportsRepository,UserPilotClient SuserPilotClient): void {Suser= User::find(143);Suser = User::find(143);////Scount = SautomatedReportsRepository->countUserReports(Suser);Sthis->info("Count: {Scount}");Scount = SautomatedReportsRepository->countAllUserReports(Suser);end diffscreenpipe"O $4100% C8Fri 24 Apr 19:42:13-zsh*5APPFixed 1 of 5623 files in 148.623 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_lamp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20508-notify-before-AJ-report-expiration) $ I...
|
NULL
|
-8711112435133234714
|
NULL
|
idle
|
ocr
|
NULL
|
Activity MonitorFileEditViewWindow• 81Help‹$0(23AP Activity MonitorFileEditViewWindow• 81Help‹$0(23APP (-zsh)APP (-zsh)DOCKERDEV (-zsh)882*3What's next:Try Dockerseamless, persistent debugging tools in any containeror image + docker debugdocker_1amp_1at [URL_WITH_CREDENTIALS] (JY-20508-notify-before-AJ-report-expiration) $ csfixdocker exec-it docker_lamp_1./vendor/bin/php-cs-fixer fix--config=.php-cs-fixer.dist.php-v--using-cache=no --diffPHP CS Fixer 3.87.1 Alexander by Fabien Potencier, Dariusz Ruminski andcontributors.PHPruntime:8.3.30Running analysis on 7 coreswith 10 files perprocess.Parallel runner is an experimental feature and may be unstable, use it at your own risk. Feedback highly appreciated!Loaded config default from".php-cs-fixer.dist.php".5623/5623100%1) app/Console/Commands/JiminnyDebugCommand.php (statement_indentation)begin diff/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php+++/home/jiminny/app/Console/Commands/JiminnyDebugCommand.php-40,7 +40,7AutomatedReportsRepository SautomatedReportsRepository,UserPilotClient SuserPilotClient): void {Suser= User::find(143);Suser = User::find(143);////Scount = SautomatedReportsRepository->countUserReports(Suser);Sthis->info("Count: {Scount}");Scount = SautomatedReportsRepository->countAllUserReports(Suser);end diffscreenpipe"O $4100% C8Fri 24 Apr 19:42:13-zsh*5APPFixed 1 of 5623 files in 148.623 seconds, 60.00 MB memory usedWhat's next:Try Docker Debug for seamless, persistent debugging tools in any container or image » docker debug docker_lamp_1Learn more at https://docs.docker.com/go/debug-cli/lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app (JY-20508-notify-before-AJ-report-expiration) $ I...
|
NULL
|
|
40222
|
832
|
13
|
2026-04-16T15:34:19.264434+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776353659264_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0lahlA100% <478-zshThu 16 Apr 18:34:18181• ₴6|DOCKERO 81DEV (-zsh)O $82vaai='ssh jiminny-qai-ecs1'vaai2='ssh jiminny-qai-ecs2'vstage='ssh ec2-user@jiminny-subenv-worker-app0'vstg='ssh jiminny-stage-ecs1'vstg2='ssh ubuntu@jiminny-stage-ecs?'which-command=whencework='cd ~/jiminny/infrastructure/dev/docker &i& docker compose up'xd='make docker-xdebug-disable'xe='make docker-xdebug-enable'zp='nano ~/.zprofile'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano zplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ nano ~/.zprofilelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $source ~/.zprofileAPP (-zsh)&3screenpipe"O 84-zsh885* Review screenpipe usage a...Poetry could not find a pyproject.tomlfile in /Users/lukas/.screenpipe or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now','-1 hour');"1722Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe § sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid'AND timestamp >= datetime('now''-1 hour');"1722|2026-04-16107:04:01.107353+00:0012026-04-16113:36:06.286533+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"2026-04-16T06:12:46.590663+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ psaux1greplukas217546.1 3.7 412825680 628320 s009S+5:21pmscreenpipegrep-Vgrep11:48.74/Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroidlukas217220.00.1 41128950421712 s009S+5:21pm0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest record --disable-audio --ignored-windows BoosteroidLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe S sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-20 minutes');"2026-04-16T06:12:46.590663+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:21:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:20:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T14:20:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T10:20:45';"1720lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T14:20:45';"I...
|
NULL
|
-8710410486754043509
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp‹$0lahlA100% <478-zshThu 16 Apr 18:34:18181• ₴6|DOCKERO 81DEV (-zsh)O $82vaai='ssh jiminny-qai-ecs1'vaai2='ssh jiminny-qai-ecs2'vstage='ssh ec2-user@jiminny-subenv-worker-app0'vstg='ssh jiminny-stage-ecs1'vstg2='ssh ubuntu@jiminny-stage-ecs?'which-command=whencework='cd ~/jiminny/infrastructure/dev/docker &i& docker compose up'xd='make docker-xdebug-disable'xe='make docker-xdebug-enable'zp='nano ~/.zprofile'lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ nano zplukas@Lukas-Kovaliks-MacBook-Pro-Jiminny~/.screenpipe $ nano ~/.zprofilelukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $source ~/.zprofileAPP (-zsh)&3screenpipe"O 84-zsh885* Review screenpipe usage a...Poetry could not find a pyproject.tomlfile in /Users/lukas/.screenpipe or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= datetime('now','-1 hour');"1722Lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe § sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*), MIN(timestamp), MAX(timestamp) FROM frames WHERE app_name = 'Boosteroid'AND timestamp >= datetime('now''-1 hour');"1722|2026-04-16107:04:01.107353+00:0012026-04-16113:36:06.286533+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-2 hours');"2026-04-16T06:12:46.590663+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ psaux1greplukas217546.1 3.7 412825680 628320 s009S+5:21pmscreenpipegrep-Vgrep11:48.74/Users/lukas/.npm/_npx/21722/lib/node_modules/screenpipe/node_modules/@screenpipe/cli-darwin-arm64/bin/screenpipe record --disable-audio --ignored-windows Boosteroidlukas217220.00.1 41128950421712 s009S+5:21pm0:00.08 node /Users/lukas/.nvm/versions/node/v14.15.4/bin/npx screenpipe@latest record --disable-audio --ignored-windows BoosteroidLukas®Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe S sqlite3 ~/.screenpipe/db.sqlite "SELECT MIN(timestamp) FROM frames WHERE timestamp >= datetime('now', '-20 minutes');"2026-04-16T06:12:46.590663+00:00lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:21:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T17:20:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3 ~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T14:20:45';"lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T10:20:45';"1720lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $ sqlite3~/.screenpipe/db.sqlite "SELECT COUNT(*) FROM frames WHERE app_name = 'Boosteroid' AND timestamp >= '2026-04-16T14:20:45';"I...
|
40220
|
|
34192
|
687
|
34
|
2026-04-16T08:24:27.051391+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776327867051_m1.jpg...
|
Dia
|
Work: Jiminny
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Sign In
Sign In
google Sign in with Google
Sign in Sign In
Sign In
google Sign in with Google
Sign in with Google
microsoft Sign in with Office 365
Sign in with Office 365
Login via SSO
Login via SSO
EU
EU
Worldwide
JY-18909-automated-reports-ask-jiminny ■ 871913
Don’t have account yet? Speak to your sales leader to get an invite....
|
[{"role":"AXHeading","text" [{"role":"AXHeading","text":"Sign In","depth":5,"role_description":"heading"},{"role":"AXStaticText","text":"Sign In","depth":6,"role_description":"text"},{"role":"AXLink","text":"google Sign in with Google","depth":5,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sign in with Google","depth":7,"role_description":"text"},{"role":"AXLink","text":"microsoft Sign in with Office 365","depth":5,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sign in with Office 365","depth":7,"role_description":"text"},{"role":"AXButton","text":"Login via SSO","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Login via SSO","depth":7,"role_description":"text"},{"role":"AXLink","text":"EU","depth":5,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"EU","depth":6,"role_description":"text"},{"role":"AXButton","text":"Worldwide","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 871913","depth":6,"bounds":{"left":0.0048611113,"top":0.0,"width":0.20972222,"height":0.018888889},"role_description":"text"},{"role":"AXStaticText","text":"Don’t have account yet? Speak to your sales leader to get an invite.","depth":8,"role_description":"text"}]...
|
-8709983178774790190
|
-4195461990831767558
|
click
|
accessibility
|
NULL
|
Sign In
Sign In
google Sign in with Google
Sign in Sign In
Sign In
google Sign in with Google
Sign in with Google
microsoft Sign in with Office 365
Sign in with Office 365
Login via SSO
Login via SSO
EU
EU
Worldwide
JY-18909-automated-reports-ask-jiminny ■ 871913
Don’t have account yet? Speak to your sales leader to get an invite....
|
34190
|
|
58899
|
1264
|
38
|
2026-04-20T13:09:04.769298+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776690544769_m1.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Postoruelaal100% <78• Mon 20 Apr 16:09:048=• а 8+Mon 20 Apr 16:00U SyncHubspotObjectsTest.testHandlSyncedAt~DProject -mportContactBatch.php© ImportOpportunityBatch.php© SyncObjects. php 20.04.26, M4.:M, 2.21k© SyncOpportunitiesMissingFielsDataC© SyncOpportunity.php 23.03.26, 10.59.© SyncProfieMetadata.php 20.04.26, 14© SyncTeamMetadata,php 23.03.26, 101UpdateOpportunitySpecilfications.phgDealinsightsD DevDialers0b ElusticsearchEngagementStats# GeckoExport› B Uvestream› 0 Mallboxes› Eo MigrateU SyncHubspotObjectsTest.testHandleWIthN...© SyncContact.phpSyncCrmÊntities Trait.phpService. phpSyncObjects. phpSyncOpportunity.phpx© SyncAccount.phppracusporonarwoo.orOpportunitySyncTrait.php->syncOpportunitiesx> C w .*class SyncOpportunity extends Connandprivate funetion synepertunttier ybarelostrategy a schssosstratey te nott,++7:SopportunitySyncParaneters = [*sánce' »> $fron,"offset' Soffset,1:SdataMessage = $fron ?2 Carbon:#today()->subMonth(->to0ateTimeStringO:v. J Taet Dasultev 1 test passed 1 test total, 24ms/opt/honebrew/Celtar/php/8.3.4/bin/phpTesting started at 11:54 ...Paronat thrsiss by stoascian bergsann e34me1f (Sto) {SdataMessage .' to- Sto;SopportunitySyncParaneters['to') = Sto;syncOpportunitiesByDateDDawnee vonuRoweu DlOUnmands/../SyncOpportunity.php 3 results->syncOpportunities8yOate(5cm-Service, Strom, Sto, Soffset):222 Scount • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount • ScrmService-> syncOpportunities(SopportunitySyncParameters, Sstrategyl:› © SyncHlubspotActiveDeals.php 1 resulkSyncOpportunitiesMissing/FieidDutaCommand. php 1 resultapp/Console/Commands/Dealinsights 1 resunt0 app/30bs/0rm 4 results~ D app/Listeners/Crm 1 result•©LayoutUpdatedListener.php 1 result70 Sthis-> sync Opportunities (Siayout);inds › Crm > © SyncOpportunity.php › © SyncOpportunity › ® •merpooeoomb Snonn yout sorcensyncOpportunities):A1 43 23For IntegrationApp ProvidersDifferent flow via BootstrapIntegrationApp → TeaninitialSyncJob:Syncs organization, profiies, and fieidsDoes NOT sync opportunities in initial sync (only metadata)MSummary: Initial ouner/profile opportunity sync happens via SyncPrefileOppertunsdispatching SyncOpportunitiesJob - which does not use Redis-based batch jobs.Ask anything (XOL)?string Scraid,?int Soffset): vold (1f (Scrnid) ‹F else <Sthis->syncProfileOpportunities(ScraService, $creid, Sfron, Sto, Soffset):Sthis->syncOpportunitiesByDate(ScraService, Sfron, Sto, Soffset):private function syncProfileOpportunities(nterface ScraService,254:47IF UTF-8 #4 soxedAneliya AngelovaStefka Stoyanova3 othersNikolay Nikolov4:09 PM | [Platform] RefinementLukas Kovalik1:07:16...
|
NULL
|
-8709836354071486525
|
NULL
|
visual_change
|
ocr
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp→Cmeet.google.com/cxs-eips-npt?authuser=0Nikolay Nikolov (Presenting, annotating)Postoruelaal100% <78• Mon 20 Apr 16:09:048=• а 8+Mon 20 Apr 16:00U SyncHubspotObjectsTest.testHandlSyncedAt~DProject -mportContactBatch.php© ImportOpportunityBatch.php© SyncObjects. php 20.04.26, M4.:M, 2.21k© SyncOpportunitiesMissingFielsDataC© SyncOpportunity.php 23.03.26, 10.59.© SyncProfieMetadata.php 20.04.26, 14© SyncTeamMetadata,php 23.03.26, 101UpdateOpportunitySpecilfications.phgDealinsightsD DevDialers0b ElusticsearchEngagementStats# GeckoExport› B Uvestream› 0 Mallboxes› Eo MigrateU SyncHubspotObjectsTest.testHandleWIthN...© SyncContact.phpSyncCrmÊntities Trait.phpService. phpSyncObjects. phpSyncOpportunity.phpx© SyncAccount.phppracusporonarwoo.orOpportunitySyncTrait.php->syncOpportunitiesx> C w .*class SyncOpportunity extends Connandprivate funetion synepertunttier ybarelostrategy a schssosstratey te nott,++7:SopportunitySyncParaneters = [*sánce' »> $fron,"offset' Soffset,1:SdataMessage = $fron ?2 Carbon:#today()->subMonth(->to0ateTimeStringO:v. J Taet Dasultev 1 test passed 1 test total, 24ms/opt/honebrew/Celtar/php/8.3.4/bin/phpTesting started at 11:54 ...Paronat thrsiss by stoascian bergsann e34me1f (Sto) {SdataMessage .' to- Sto;SopportunitySyncParaneters['to') = Sto;syncOpportunitiesByDateDDawnee vonuRoweu DlOUnmands/../SyncOpportunity.php 3 results->syncOpportunities8yOate(5cm-Service, Strom, Sto, Soffset):222 Scount • ScrmService»›syncOpportunities(SopportunitySyncParameters, Satrategyl:254 Scount • ScrmService-> syncOpportunities(SopportunitySyncParameters, Sstrategyl:› © SyncHlubspotActiveDeals.php 1 resulkSyncOpportunitiesMissing/FieidDutaCommand. php 1 resultapp/Console/Commands/Dealinsights 1 resunt0 app/30bs/0rm 4 results~ D app/Listeners/Crm 1 result•©LayoutUpdatedListener.php 1 result70 Sthis-> sync Opportunities (Siayout);inds › Crm > © SyncOpportunity.php › © SyncOpportunity › ® •merpooeoomb Snonn yout sorcensyncOpportunities):A1 43 23For IntegrationApp ProvidersDifferent flow via BootstrapIntegrationApp → TeaninitialSyncJob:Syncs organization, profiies, and fieidsDoes NOT sync opportunities in initial sync (only metadata)MSummary: Initial ouner/profile opportunity sync happens via SyncPrefileOppertunsdispatching SyncOpportunitiesJob - which does not use Redis-based batch jobs.Ask anything (XOL)?string Scraid,?int Soffset): vold (1f (Scrnid) ‹F else <Sthis->syncProfileOpportunities(ScraService, $creid, Sfron, Sto, Soffset):Sthis->syncOpportunitiesByDate(ScraService, Sfron, Sto, Soffset):private function syncProfileOpportunities(nterface ScraService,254:47IF UTF-8 #4 soxedAneliya AngelovaStefka Stoyanova3 othersNikolay Nikolov4:09 PM | [Platform] RefinementLukas Kovalik1:07:16...
|
NULL
|
|
23410
|
505
|
64
|
2026-04-15T11:22:19.925760+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776252139925_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
66017351060141a0/all.Imperial Age8Game Paused (P)B 66017351060141a0/all.Imperial Age8Game Paused (P)Builderkovalfklukas (Britons))T 0+1/0+240/408 Ashikaga Takauji: 17010/170107 Basil the Macedonian: 15529/155292 Anccu Hualloc: 13136/131361 kovaliklukas: 11406/114063 Bird Jaguar: 7254/72544 Siddhraj Jaisingh: 4542/45425 Honorius: 4037/40376 Mindaugas: 2664/2664IV...
|
NULL
|
-8709705875217231565
|
NULL
|
click
|
ocr
|
NULL
|
66017351060141a0/all.Imperial Age8Game Paused (P)B 66017351060141a0/all.Imperial Age8Game Paused (P)Builderkovalfklukas (Britons))T 0+1/0+240/408 Ashikaga Takauji: 17010/170107 Basil the Macedonian: 15529/155292 Anccu Hualloc: 13136/131361 kovaliklukas: 11406/114063 Bird Jaguar: 7254/72544 Siddhraj Jaisingh: 4542/45425 Honorius: 4037/40376 Mindaugas: 2664/2664IV...
|
23408
|
|
7073
|
125
|
69
|
2026-04-13T14:31:30.112877+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-13/1776 /Users/lukas/.screenpipe/data/data/2026-04-13/1776090690112_m1.jpg...
|
Firefox
|
Screenpipe Dashboard — Personal
|
True
|
http://100.73.206.126:8766
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
Sham DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
dennikn.sk/
dennikn.sk/
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Close tab
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Dangbei Atom Review - RTINGS.com
Dangbei Atom Review - RTINGS.com
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Problem loading page
Problem loading page
Welcome to Firefox
Welcome to Firefox
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe
Screenpipe
Activity
Search
Audio
Work Report
AI Summary
Date
13
/
04
/
2026
Calendar
AUDIO TRANSCRIPTIONS...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (9) - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"dennikn.sk/","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"dennikn.sk/","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pazaruvaj.com — Знак, че е време за най-добрите оферти","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pazaruvaj.com — Знак, че е време за най-добрите оферти","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dangbei Atom Review - RTINGS.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dangbei Atom Review - RTINGS.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Problem loading page","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Problem loading page","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Welcome to Firefox","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome to Firefox","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe","depth":7,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"04","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AUDIO TRANSCRIPTIONS","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8709250737897119512
|
-5412722061375222692
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
Sham DXP4800PLUS-B5F8
Inbox (9) - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
dennikn.sk/
dennikn.sk/
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Close tab
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Dangbei Atom Review - RTINGS.com
Dangbei Atom Review - RTINGS.com
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Problem loading page
Problem loading page
Welcome to Firefox
Welcome to Firefox
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe
Screenpipe
Activity
Search
Audio
Work Report
AI Summary
Date
13
/
04
/
2026
Calendar
AUDIO TRANSCRIPTIONS...
|
NULL
|
|
25304
|
543
|
22
|
2026-04-15T12:48:34.480275+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776257314480_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpED→CSearch Ji +SlackFileEditViewGoHistoryWindowHelpED→CSearch Jiminny IncHomeJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# releases8 22Messages© FilesBookmarks+Tjiminny/appAddod hu GitHubToday ~CircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobNew..•GitHub APP 3:28 PM7 new commits pushed to master by nikolay-yankovMoreDirect messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow morejiminny/app| Added by GitHubii: Apps+ToastMessage #releasesJira Cloud+Aa...Sprint Review - in 12 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,04 GB1,16 GB962,5 MB958,4 MB836,5 MB796,6 MB793,1 MB547,0 MB544,3 MB538,3 MB516,0 MB467,5 MB447,8 MB438,4 MB414,1 MB403,1 MB387,3 MB386,1 MB372,3 MB346,8 MB329,7 MB326,1 MB302,4 MB290,8 MB271,4 MB235,4 MB223,7 MB207,6 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 15:48:34CPUMemoryDiskThreads38222674842525262912162426232625242215201315286272725EnergyPorts59819 7781247321 20112520 015128251242168200121124121124124121119172313722161251 832125126124PID93892407429748014146644203084236713146738019938994186335480358313527643652430163689848173265481148509106051935833487856138482987429516,00 GB14,20 GB<1,75 GB2,99 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,96 GB2,87 GB6,82 GB...
|
NULL
|
-8708899863508138334
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoHistoryWindowHelpED→CSearch Ji +SlackFileEditViewGoHistoryWindowHelpED→CSearch Jiminny IncHomeJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# releases8 22Messages© FilesBookmarks+Tjiminny/appAddod hu GitHubToday ~CircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobNew..•GitHub APP 3:28 PM7 new commits pushed to master by nikolay-yankovMoreDirect messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow morejiminny/app| Added by GitHubii: Apps+ToastMessage #releasesJira Cloud+Aa...Sprint Review - in 12 mRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxFirefoxCP Isolated Web ContentCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,04 GB1,16 GB962,5 MB958,4 MB836,5 MB796,6 MB793,1 MB547,0 MB544,3 MB538,3 MB516,0 MB467,5 MB447,8 MB438,4 MB414,1 MB403,1 MB387,3 MB386,1 MB372,3 MB346,8 MB329,7 MB326,1 MB302,4 MB290,8 MB271,4 MB235,4 MB223,7 MB207,6 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 15:48:34CPUMemoryDiskThreads38222674842525262912162426232625242215201315286272725EnergyPorts59819 7781247321 20112520 015128251242168200121124121124124121119172313722161251 832125126124PID93892407429748014146644203084236713146738019938994186335480358313527643652430163689848173265481148509106051935833487856138482987429516,00 GB14,20 GB<1,75 GB2,99 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,96 GB2,87 GB6,82 GB...
|
25302
|
|
15991
|
357
|
20
|
2026-04-14T15:04:32.902306+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776179072902_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
14018920016/25toDark AgeGame Paused (P)Build Lumbe 14018920016/25toDark AgeGame Paused (P)Build Lumber Camp (Cost: 100 0))Used to deposit wood and researchwood-gathering technologies. Build nearforests to gather wood faster.Upgrades: line of sight (Town Center); HP,armor (University); more resistant to Monks(Monastery).O600 00E7GO(Hotkey: R)Villagerkovalfklukas (Britons))Zhu Di: 383/3838 Vortigern: 375/375kovaliklukas: 368/3683 Anawrahta: 362/3624 Afonso de Albuquerque: 354/3546 John the Blind: 350/3507 Humayun: 346/3465 Urus Khan: 339/339...
|
NULL
|
-8708787263127760904
|
NULL
|
visual_change
|
ocr
|
NULL
|
14018920016/25toDark AgeGame Paused (P)Build Lumbe 14018920016/25toDark AgeGame Paused (P)Build Lumber Camp (Cost: 100 0))Used to deposit wood and researchwood-gathering technologies. Build nearforests to gather wood faster.Upgrades: line of sight (Town Center); HP,armor (University); more resistant to Monks(Monastery).O600 00E7GO(Hotkey: R)Villagerkovalfklukas (Britons))Zhu Di: 383/3838 Vortigern: 375/375kovaliklukas: 368/3683 Anawrahta: 362/3624 Afonso de Albuquerque: 354/3546 John the Blind: 350/3507 Humayun: 346/3465 Urus Khan: 339/339...
|
NULL
|
|
51754
|
1118
|
56
|
2026-04-20T06:20:23.408440+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776666023408_m1.jpg...
|
Firefox
|
[JY-18909] [Part2] Automated reports with Ask Jimi [JY-18909] [Part2] Automated reports with Ask Jiminny - Jira — Work...
|
True
|
jiminny.atlassian.net/browse/JY-18909
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
5 Notifications
5 Notifications
Help
Help
Settings
Settings
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-18909
JY-18909
Copy link
[Part2] Automated reports with Ask Jiminny- Summary, edit
[Part2] Automated reports with Ask Jiminny
[Part2] Automated reports with Ask Jiminny
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to allow our users to automate the execution of their
AJA
prompts in order to save time and have them ready when they need them.
Create the reports:
admins and managers should be able to automate reports based on their Panorama prompts and saved searches
the report should be generated in a pdf - use a lightly branded one this time -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1
Connect your Figma account
Connect your Figma account
if the customer hasn’t added a brand logo then use the Jiminny logo
once the report is ready it should be shared with the users over email -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1
Connect your Figma account
Connect your Figma account
If no one is selected then the report will only be shared with the person who created it
ensure the reports has a proper structure and formatting - headings, bold etc. - take examples from the Exec Reports
ensure the report has links to playback when examples are used
in the beginning of each report have a brief section for ‘Data Srouce’ and ‘Objective’ - take the Exec summary report for example
data source should cover what data has been analysed
objective should be a short paragraph that explains the goal
Show the reports in Jiminny:
show the report in the AI Reports page with a special logo -
Project Phoenix
Project Phoenix
only the creator of the reports and the users it is shared with should be able to see it in the list
users should be able to preview the report and download it
the creator of the report should be able to delete it - deleting it will delete only this specific pdf
'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list for such reports
when a report is shared with a user then show who shared it in the ‘Shared’ column -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4
Connect your Figma account
Connect your Figma account
Collapse Subtasks Subtasks Work item actions Configure columns Create subtask
Collapse Subtasks
Collapse Subtasks
Subtasks
Work item actions
Work item actions
Configure columns
Configure columns
Create subtask
Create subtask
82
% Done
Work
Work
More actions for Work
More actions for Work
Priority
Priority
More actions for Priority
More actions for Priority
Story Points
Story Points
More actions for Story Points
More actions for Story Points
Assignee
Assignee
More actions for Assignee
More actions for Assignee
Status
Status
Status • Sort in ascending order
Status • Sort in ascending order
More actions for Status
More actions for Status
JY-20570 is not resolved
JY-20570
[FE] Prepare HTML Template for PDF report
[FE] Prepare HTML Template for PDF report
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20571 is not resolved
JY-20571
[AI] Create PDF from Panorama results
[AI] Create PDF from Panorama results
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20572 is not resolved
JY-20572
[BE] Send email for generated report (check design)
[BE] Send email for generated report (check design)
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20573 is not resolved
JY-20573
[BE] Manage recipients for email sending
[BE] Manage recipients for email sending
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20574 is not resolved
JY-20574
[AI] Ensure PDF formatting is good
[AI] Ensure PDF formatting is good
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20575 is not resolved
JY-20575
[AI] Make links to Playback in PDF work
[AI] Make links to Playback in PDF work
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20576 is not resolved
JY-20576
[FE] Add new generated report in the AI reports page
[FE] Add new generated report in the AI reports page
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20577 is not resolved
JY-20577
[BE] Add flag in AI Reports list for delete rights
[BE] Add flag in AI Reports list for delete rights
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20578 is not resolved
JY-20578
[FE] Add delete button
[FE] Add delete button
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20579 is not resolved
JY-20579
[BE] Add new report type in filters options
[BE] Add new report type in filters options
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"help_text":"","placeholder":"Search","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create","depth":10,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"5 Notifications","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"5 Notifications","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"For you","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-19240","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19240","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":15,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-18909","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":16,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"[Part2] Automated reports with Ask Jiminny- Summary, edit","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"[Part2] Automated reports with Ask Jiminny","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[Part2] Automated reports with Ask Jiminny","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Description, edit","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"We want to allow our users to automate the execution of their","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJA","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"prompts in order to save time and have them ready when they need them.","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create the reports:","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"admins and managers should be able to automate reports based on their Panorama prompts and saved searches","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the report should be generated in a pdf - use a lightly branded one this time -","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Connect your Figma account","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Connect your Figma account","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"if the customer hasn’t added a brand logo then use the Jiminny logo","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"once the report is ready it should be shared with the users over email -","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Connect your Figma account","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Connect your Figma account","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If no one is selected then the report will only be shared with the person who created it","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ensure the reports has a proper structure and formatting - headings, bold etc. - take examples from the Exec Reports","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ensure the report has links to playback when examples are used","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"in the beginning of each report have a brief section for ‘Data Srouce’ and ‘Objective’ - take the Exec summary report for example","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"data source should cover what data has been analysed","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"objective should be a short paragraph that explains the goal","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Show the reports in Jiminny:","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"show the report in the AI Reports page with a special logo -","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Project Phoenix","depth":16,"help_text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=5868-39681&t=nJK629FloDyaWRYR-1","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"only the creator of the reports and the users it is shared with should be able to see it in the list","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"users should be able to preview the report and download it","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"the creator of the report should be able to delete it - deleting it will delete only this specific pdf","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list for such reports","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"when a report is shared with a user then show who shared it in the ‘Shared’ column -","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Connect your Figma account","depth":17,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Connect your Figma account","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Subtasks Subtasks Work item actions Configure columns Create subtask","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Subtasks","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Subtasks","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Subtasks","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Work item actions","depth":12,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Work item actions","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Configure columns","depth":14,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Configure columns","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create subtask","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create subtask","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"82","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"% Done","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCell","text":"Work","depth":19,"help_text":"","role_description":"cell","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Work","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Work","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Work","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCell","text":"Priority","depth":19,"help_text":"","role_description":"cell","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Priority","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Priority","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Priority","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCell","text":"Story Points","depth":19,"help_text":"","role_description":"cell","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Story Points","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Story Points","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Story Points","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCell","text":"Assignee","depth":19,"help_text":"","role_description":"cell","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Assignee","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Assignee","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Assignee","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCell","text":"Status","depth":19,"help_text":"","role_description":"cell","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Status","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status • Sort in ascending order","depth":21,"help_text":"","role_description":"Sort Button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status • Sort in ascending order","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Status","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Status","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20570 is not resolved","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20570","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[FE] Prepare HTML Template for PDF report","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[FE] Prepare HTML Template for PDF report","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Nikolay Yankov- edit Assignee","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Nikolay Yankov","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20571 is not resolved","depth":20,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20571","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[AI] Create PDF from Panorama results","depth":22,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[AI] Create PDF from Panorama results","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Steliyan Georgiev- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Steliyan Georgiev","depth":21,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.0,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20572 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.0,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20572","depth":21,"bounds":{"left":0.025,"top":0.0,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[BE] Send email for generated report (check design)","depth":22,"bounds":{"left":0.07777778,"top":0.0,"width":0.23993056,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[BE] Send email for generated report (check design)","depth":23,"bounds":{"left":0.07777778,"top":0.0,"width":0.23993056,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.0,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.0,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lukas Kovalik- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Lukas Kovalik","depth":21,"bounds":{"left":0.64166665,"top":0.0,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.6638889,"top":0.0,"width":0.06284722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.0,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.0,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20573 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.0,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20573","depth":21,"bounds":{"left":0.025,"top":0.0,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[BE] Manage recipients for email sending","depth":22,"bounds":{"left":0.07777778,"top":0.0,"width":0.18888889,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[BE] Manage recipients for email sending","depth":23,"bounds":{"left":0.07777778,"top":0.0,"width":0.18888889,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.0,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.0,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lukas Kovalik- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.0,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Lukas Kovalik","depth":21,"bounds":{"left":0.64166665,"top":0.0,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.6638889,"top":0.0,"width":0.06284722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.0,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.0,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20574 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.03,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20574","depth":21,"bounds":{"left":0.025,"top":0.03,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[AI] Ensure PDF formatting is good","depth":22,"bounds":{"left":0.07777778,"top":0.03,"width":0.16076389,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[AI] Ensure PDF formatting is good","depth":23,"bounds":{"left":0.07777778,"top":0.03,"width":0.16076389,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.026111111,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.03888889,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.03,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Steliyan Georgiev- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.03888889,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Steliyan Georgiev","depth":21,"bounds":{"left":0.64166665,"top":0.026111111,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.6638889,"top":0.03,"width":0.08055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.032222223,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.033333335,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20575 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.07444444,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20575","depth":21,"bounds":{"left":0.025,"top":0.07444444,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[AI] Make links to Playback in PDF work","depth":22,"bounds":{"left":0.07777778,"top":0.07444444,"width":0.18368055,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[AI] Make links to Playback in PDF work","depth":23,"bounds":{"left":0.07777778,"top":0.07444444,"width":0.18368055,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.07055555,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.083333336,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.07444444,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Steliyan Georgiev- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.083333336,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Steliyan Georgiev","depth":21,"bounds":{"left":0.64166665,"top":0.07055555,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.6638889,"top":0.07444444,"width":0.08055556,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.07666667,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.07777778,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20576 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.11888889,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20576","depth":21,"bounds":{"left":0.025,"top":0.11888889,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[FE] Add new generated report in the AI reports page","depth":22,"bounds":{"left":0.07777778,"top":0.11888889,"width":0.24583334,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[FE] Add new generated report in the AI reports page","depth":23,"bounds":{"left":0.07777778,"top":0.11888889,"width":0.24583334,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.115,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.12777779,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.11888889,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Nikolay Yankov- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.12777779,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Nikolay Yankov","depth":21,"bounds":{"left":0.64166665,"top":0.115,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.6638889,"top":0.11888889,"width":0.06979167,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.12111111,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.12222222,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20577 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.16333333,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20577","depth":21,"bounds":{"left":0.025,"top":0.16333333,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[BE] Add flag in AI Reports list for delete rights","depth":22,"bounds":{"left":0.07777778,"top":0.16333333,"width":0.21458334,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[BE] Add flag in AI Reports list for delete rights","depth":23,"bounds":{"left":0.07777778,"top":0.16333333,"width":0.21458334,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.15944445,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.17222223,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.16333333,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lukas Kovalik- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.17222223,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Lukas Kovalik","depth":21,"bounds":{"left":0.64166665,"top":0.15944445,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.6638889,"top":0.16333333,"width":0.06284722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.16555555,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.16666667,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20578 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.20777778,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20578","depth":21,"bounds":{"left":0.025,"top":0.20777778,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[FE] Add delete button","depth":22,"bounds":{"left":0.07777778,"top":0.20777778,"width":0.103472225,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[FE] Add delete button","depth":23,"bounds":{"left":0.07777778,"top":0.20777778,"width":0.103472225,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.2038889,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.21666667,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.20777778,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Nikolay Yankov- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.21666667,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Nikolay Yankov","depth":21,"bounds":{"left":0.64166665,"top":0.2038889,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.6638889,"top":0.20777778,"width":0.06979167,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.21,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.21111111,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20579 is not resolved","depth":20,"bounds":{"left":0.025,"top":0.2522222,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20579","depth":21,"bounds":{"left":0.025,"top":0.2522222,"width":0.044444446,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[BE] Add new report type in filters options","depth":22,"bounds":{"left":0.07777778,"top":0.2522222,"width":0.19270833,"height":0.019444445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[BE] Add new report type in filters options","depth":23,"bounds":{"left":0.07777778,"top":0.2522222,"width":0.19270833,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit Summary","depth":21,"bounds":{"left":0.52916664,"top":0.24833333,"width":0.016666668,"height":0.026666667},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit Priority","depth":20,"bounds":{"left":0.55694443,"top":0.2611111,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Medium","depth":21,"bounds":{"left":0.57361114,"top":0.2522222,"width":0.03715278,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Lukas Kovalik- edit Assignee","depth":20,"bounds":{"left":0.64166665,"top":0.2611111,"width":0.00069444446,"height":0.0011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about Lukas Kovalik","depth":21,"bounds":{"left":0.64166665,"top":0.24833333,"width":0.028819444,"height":0.026666667},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.6638889,"top":0.2522222,"width":0.06284722,"height":0.019444445},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Done - Change status","depth":20,"bounds":{"left":0.68159723,"top":0.25444445,"width":0.0375,"height":0.017777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DONE","depth":24,"bounds":{"left":0.684375,"top":0.25555557,"width":0.022222223,"height":0.015555556},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8708467678247936878
|
-2056670542269090582
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app
[JY-20543] AJ Reports > Tracking - Jira
[JY-20543] AJ Reports > Tracking - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
5 Notifications
5 Notifications
Help
Help
Settings
Settings
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-19240
JY-19240
/
Story - Change work type
JY-18909
JY-18909
Copy link
[Part2] Automated reports with Ask Jiminny- Summary, edit
[Part2] Automated reports with Ask Jiminny
[Part2] Automated reports with Ask Jiminny
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Edit Description, edit
We want to allow our users to automate the execution of their
AJA
prompts in order to save time and have them ready when they need them.
Create the reports:
admins and managers should be able to automate reports based on their Panorama prompts and saved searches
the report should be generated in a pdf - use a lightly branded one this time -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=7691-61688&t=cLuF7fP7zTl4xBsQ-1
Connect your Figma account
Connect your Figma account
if the customer hasn’t added a brand logo then use the Jiminny logo
once the report is ready it should be shared with the users over email -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=12208-23064&t=nJK629FloDyaWRYR-1
Connect your Figma account
Connect your Figma account
If no one is selected then the report will only be shared with the person who created it
ensure the reports has a proper structure and formatting - headings, bold etc. - take examples from the Exec Reports
ensure the report has links to playback when examples are used
in the beginning of each report have a brief section for ‘Data Srouce’ and ‘Objective’ - take the Exec summary report for example
data source should cover what data has been analysed
objective should be a short paragraph that explains the goal
Show the reports in Jiminny:
show the report in the AI Reports page with a special logo -
Project Phoenix
Project Phoenix
only the creator of the reports and the users it is shared with should be able to see it in the list
users should be able to preview the report and download it
the creator of the report should be able to delete it - deleting it will delete only this specific pdf
'Ask Jiminny Report' should be added as an option to the Report type filter so users can filter the list for such reports
when a report is shared with a user then show who shared it in the ‘Shared’ column -
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4
https://www.figma.com/design/jXcUe1y9mx5Fiz8KosLAUn/Project-Phoenix?node-id=14369-40078&t=We33fyQzIUfHuXVR-4
Connect your Figma account
Connect your Figma account
Collapse Subtasks Subtasks Work item actions Configure columns Create subtask
Collapse Subtasks
Collapse Subtasks
Subtasks
Work item actions
Work item actions
Configure columns
Configure columns
Create subtask
Create subtask
82
% Done
Work
Work
More actions for Work
More actions for Work
Priority
Priority
More actions for Priority
More actions for Priority
Story Points
Story Points
More actions for Story Points
More actions for Story Points
Assignee
Assignee
More actions for Assignee
More actions for Assignee
Status
Status
Status • Sort in ascending order
Status • Sort in ascending order
More actions for Status
More actions for Status
JY-20570 is not resolved
JY-20570
[FE] Prepare HTML Template for PDF report
[FE] Prepare HTML Template for PDF report
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20571 is not resolved
JY-20571
[AI] Create PDF from Panorama results
[AI] Create PDF from Panorama results
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20572 is not resolved
JY-20572
[BE] Send email for generated report (check design)
[BE] Send email for generated report (check design)
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20573 is not resolved
JY-20573
[BE] Manage recipients for email sending
[BE] Manage recipients for email sending
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20574 is not resolved
JY-20574
[AI] Ensure PDF formatting is good
[AI] Ensure PDF formatting is good
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20575 is not resolved
JY-20575
[AI] Make links to Playback in PDF work
[AI] Make links to Playback in PDF work
Edit Summary
Edit Priority
Medium
Steliyan Georgiev- edit Assignee
More information about Steliyan Georgiev
Steliyan Georgiev
Done - Change status
DONE
JY-20576 is not resolved
JY-20576
[FE] Add new generated report in the AI reports page
[FE] Add new generated report in the AI reports page
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20577 is not resolved
JY-20577
[BE] Add flag in AI Reports list for delete rights
[BE] Add flag in AI Reports list for delete rights
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE
JY-20578 is not resolved
JY-20578
[FE] Add delete button
[FE] Add delete button
Edit Summary
Edit Priority
Medium
Nikolay Yankov- edit Assignee
More information about Nikolay Yankov
Nikolay Yankov
Done - Change status
DONE
JY-20579 is not resolved
JY-20579
[BE] Add new report type in filters options
[BE] Add new report type in filters options
Edit Summary
Edit Priority
Medium
Lukas Kovalik- edit Assignee
More information about Lukas Kovalik
Lukas Kovalik
Done - Change status
DONE...
|
51750
|
|
2131
|
45
|
37
|
2026-04-12T09:29:33.068647+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-12/1775 /Users/lukas/.screenpipe/data/data/2026-04-12/1775986173068_m1.jpg...
|
Firefox
|
Search results for "profile" – Add-ons for Search results for "profile" – Add-ons for Firefox (en-US) — Personal...
|
True
|
addons.mozilla.org/en-US/firefox/search/?q=profile
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
Inbox (1) - [EMAIL] - Gmail
Sham DXP4800PLUS-B5F8
Inbox (1) - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Dangbei Atom Review - RTINGS.com
Dangbei Atom Review - RTINGS.com
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Search results for "profile" – Add-ons for Firefox (en-US)
Search results for "profile" – Add-ons for Firefox (en-US)
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said can switch between profiles in firefox using keyboard?
You said
can switch between profiles in firefox using keyboard?
Listen
Show more options
Show thinking
Gemini said
Gemini said
Yes, you can switch between Firefox profiles using your keyboard, though Firefox doesn't have a single, dedicated built-in shortcut for this like some other browsers do.
Here are the best ways to do it using only your keyboard, ranging from built-in methods to setting up custom hotkeys.
Method 1: The Built-in about:profiles Page
Method 1: The Built-in
about:profiles
Page
This is the fastest native way to launch a different profile without leaving your current keyboard workflow.
Press
(Windows/Linux) or
(Mac) to focus the address bar.
Type
and press
.
Use the
key to navigate through the page until you highlight the
"Launch profile in new browser"
button under your desired profile.
Press
to open it.
Method 2: Create Custom OS Shortcuts (Windows)
Method 2: Create Custom OS Shortcuts (Windows)
If you switch between specific profiles frequently, you can create desktop shortcuts for each profile and assign a global keyboard hotkey to them.
Locate your Firefox shortcut on your desktop, copy it, and paste a new version.
Right-click the new shortcut and select
Properties
.
In the
Shortcut
tab, look at the
Target
field. Add a space at the very end, followed by
.
Still in the Properties window, click inside the
Shortcut key
box.
Press the key combination you want to use (e.g.,
).
Click
Apply
and
OK
.
Now, pressing that key combination from anywhere in Windows will instantly launch that specific Firefox profile.
Method 3: Use the Profile Manager on Launch
Method 3: Use the Profile Manager on Launch
If you want to choose your profile every time you open Firefox using keyboard arrows:
Press
(Windows) to open the Run dialog.
Type
and press
.
The Firefox Profile Manager will pop up. You can use the
and
arrow keys to select your profile, and press
to launch it.
Method 4: Use an Extension
Method 4: Use an Extension
If you want an experience closer to Chrome's profile switcher (which allows for easier hotkey mapping within the browser UI), you can use a community-favorite extension.
Profile Switcher for Firefox:
This extension adds a profile menu to your toolbar. Once installed, you can go into Firefox's Add-on settings (press
> click the gear icon > select "Manage Extension Shortcuts") and assign a custom keyboard shortcut to open the Profile Switcher menu.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said I am on mac
You said
I am on mac
Listen
Show more options
Show thinking
Gemini said
Gemini said
Got it! Since you are on a Mac, the methods change a bit because macOS handles application shortcuts and command-line arguments differently than Windows.
Here are the best keyboard-friendly ways to switch Firefox profiles specifically for macOS:
Method 1: The Built-in about:profiles Page
Method 1: The Built-in
about:profiles
Page
This is still the quickest way to do it natively without leaving the browser.
Press
to focus the address bar.
Type
and press
.
Press
to navigate through the page until you highlight the
"Launch profile in new browser"
button under your desired profile.
Press
to open it.
Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)
Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)
macOS doesn't let you add hotkeys directly to app icons like Windows does, but you can easily achieve the exact same thing using the built-in Apple
Shortcuts
app.
Open the
Shortcuts
app on your Mac.
Click the
button at the top to create a new shortcut.
In the search bar on the right, type
Run Shell Script
and double-click it to add it to your workflow.
In the script box that appears, paste the following command (replace "Work" with the exact name of your Firefox profile):
Click the
Info (i)
icon in the right sidebar (or click the shortcut name at the top and select
Details
).
Click
Add Keyboard Shortcut
and press the key combination you want to use (e.g.,
).
Now, pressing that combination anywhere on your Mac will instantly open that specific Firefox profile.
Method 3: Use the Profile Manager via Terminal
Method 3: Use the Profile Manager via Terminal
If you want to pull up the Firefox Profile Manager to choose a profile using your arrow keys, you can launch it via Terminal.
Press
to open Spotlight Search.
Type
Terminal
and press
.
Paste the following command and press
:
The Profile Manager window will appear. Use the
and
arrows to select your profile, and press
to launch it.
Method 4: Use an Extension
Method 4: Use an Extension
Just like on other operating systems, you can use an extension to mimic the Chrome-style profile switcher and assign a Mac keyboard shortcut to it.
Install the
Profile Switcher for Firefox
extension.
Press
to open the Add-ons page.
Click the
Gear icon
at the top right and select
Manage Extension Shortcuts
.
Find the Profile Switcher extension and record a custom shortcut (like
) to open the menu instantly.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Firefox Browser Add-ons
Firefox Browser Add-ons
Extensions
Extensions
Themes
Themes
More…
More…
Firefox Add-ons Blog
Firefox Add-ons Blog
Extension Workshop
Extension Workshop
Developer Hub
Developer Hub
Log in
Log in
Search
profile
profile
profile
Search
Search
2,006 results found for "profile"
2,006 results found for "profile"
Filter results
Filter results
Sort by
Add-on Type
Badging
Search results
Profile Picture Viewer
Profile Picture Viewer
Profile Picture Viewer
Profile Picture Viewer Bypass profile picture guard and see user's profile picture in full size. How To Use: 1. Open user's profile page 2. Right-Click and Select "Unlock full size profile picture" Works on Facebook, Instagram, Tiktok.
Rated 4 out of 5
Limited
Limited
248 users
248 users
Show Profile
Show Profile
Show Profile
Display profile hint on window title or customized locations (with or without individual icon).
Rated 3.5 out of 5
neo82
neo82
275 users
275 users
Blackfire Profiler
Blackfire Profiler
Blackfire Profiler
Profile your PHP application from your browser
Rated 4.6 out of 5
Blackfire
Blackfire
922 users
922 users
Profile Indicator
Profile Indicator
Profile Indicator
Displays which Firefox profile is in use.
Rated 3.3 out of 5
Bing
Bing
189 users
189 users
Cookie Profile Switcher
Cookie Profile Switcher
Cookie Profile Switcher
Store & Manage multiple cookie profiles per domain.
Rated 4.6 out of 5
emerysteele-1364597629.54
emerysteele-1364597629.54
142 users
142 users
Go To Roblox Profile
Go To Roblox Profile
Go To Roblox Profile
Pull up a Roblox user's profile by entering their username or ID.
Rated 5 out of 5
gtrpdev
gtrpdev
72 users
72 users
SteamProfilePreviewer
SteamProfilePreviewer
SteamProfilePreviewer
Adds a preview button to the items on the Steam points shop to showcase them on YOUR profile.
Rated 3.8 out of 5
Miko
Miko
433 users
433 users
DG Edge - Claim your profile
DG Edge - Claim your profile
DG Edge - Claim your profile
Use this extension to automatically connect your DG Edge user to your GT7 player profile in order to access profile editing and access more features like setups uploading and more.
Rated 5 out of 5
Simon Laudati
Simon Laudati
185 users
185 users...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1) - kovaliklukas@gmail.com - Gmail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Shameless • HBO Max","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Shameless • HBO Max","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Settings","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Settings","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"firefox sidebar - Google Search","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"firefox sidebar - Google Search","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"How to use AI-enhanced tab groups | Firefox Help","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"How to use AI-enhanced tab groups | Firefox Help","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons Manager","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons Manager","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Irán – Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Irán – Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Vimium Options","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Vimium Options","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Machines - Tailscale","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Machines - Tailscale","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe Dashboard","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe Dashboard","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pazaruvaj.com — Знак, че е време за най-добрите оферти","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pazaruvaj.com — Знак, че е време за най-добрите оферти","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Browser Extension Getting Started | Bitwarden","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Browser Extension Getting Started | Bitwarden","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Extensions – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Dangbei Atom Review - RTINGS.com","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Dangbei Atom Review - RTINGS.com","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results for \"profile\" – Add-ons for Firefox (en-US)","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Search results for \"profile\" – Add-ons for Firefox (en-US)","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Close Google Gemini (⌃X)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Chat settings","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Google Account: Lukáš Koválik (kovaliklukas@gmail.com)","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Main menu","depth":12,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New chat","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share conversation","depth":11,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open menu for conversation actions.","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXHeading","text":"Conversation with Gemini","depth":15,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Conversation with Gemini","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said can switch between profiles in firefox using keyboard?","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"can switch between profiles in firefox using keyboard?","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yes, you can switch between Firefox profiles using your keyboard, though Firefox doesn't have a single, dedicated built-in shortcut for this like some other browsers do.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here are the best ways to do it using only your keyboard, ranging from built-in methods to setting up custom hotkeys.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 1: The Built-in about:profiles Page","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 1: The Built-in","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about:profiles","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is the fastest native way to launch a different profile without leaving your current keyboard workflow.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Windows/Linux) or","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Mac) to focus the address bar.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"key to navigate through the page until you highlight the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"Launch profile in new browser\"","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"button under your desired profile.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to open it.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 2: Create Custom OS Shortcuts (Windows)","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 2: Create Custom OS Shortcuts (Windows)","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you switch between specific profiles frequently, you can create desktop shortcuts for each profile and assign a global keyboard hotkey to them.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Locate your Firefox shortcut on your desktop, copy it, and paste a new version.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Right-click the new shortcut and select","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Properties","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shortcut","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"tab, look at the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Target","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"field. Add a space at the very end, followed by","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Still in the Properties window, click inside the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shortcut key","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"box.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press the key combination you want to use (e.g.,","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Apply","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"OK","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Now, pressing that key combination from anywhere in Windows will instantly launch that specific Firefox profile.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 3: Use the Profile Manager on Launch","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 3: Use the Profile Manager on Launch","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to choose your profile every time you open Firefox using keyboard arrows:","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"(Windows) to open the Run dialog.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Firefox Profile Manager will pop up. You can use the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"arrow keys to select your profile, and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to launch it.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 4: Use an Extension","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 4: Use an Extension","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want an experience closer to Chrome's profile switcher (which allows for easier hotkey mapping within the browser UI), you can use a community-favorite extension.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile Switcher for Firefox:","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This extension adds a profile menu to your toolbar. Once installed, you can go into Firefox's Add-on settings (press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"> click the gear icon > select \"Manage Extension Shortcuts\") and assign a custom keyboard shortcut to open the Profile Switcher menu.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":24,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":24,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Share and export","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":24,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy prompt","depth":21,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Edit","depth":21,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"You said I am on mac","depth":21,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"You said","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"I am on mac","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Listen","depth":24,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show thinking","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Gemini said","depth":23,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini said","depth":24,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Got it! Since you are on a Mac, the methods change a bit because macOS handles application shortcuts and command-line arguments differently than Windows.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Here are the best keyboard-friendly ways to switch Firefox profiles specifically for macOS:","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 1: The Built-in about:profiles Page","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 1: The Built-in","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"about:profiles","depth":28,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Page","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"This is still the quickest way to do it natively without leaving the browser.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to focus the address bar.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to navigate through the page until you highlight the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"\"Launch profile in new browser\"","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"button under your desired profile.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to open it.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"macOS doesn't let you add hotkeys directly to app icons like Windows does, but you can easily achieve the exact same thing using the built-in Apple","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shortcuts","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Open the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shortcuts","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"app on your Mac.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"button at the top to create a new shortcut.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the search bar on the right, type","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Run Shell Script","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and double-click it to add it to your workflow.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In the script box that appears, paste the following command (replace \"Work\" with the exact name of your Firefox profile):","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Info (i)","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"icon in the right sidebar (or click the shortcut name at the top and select","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Details","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add Keyboard Shortcut","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and press the key combination you want to use (e.g.,","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":").","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Now, pressing that combination anywhere on your Mac will instantly open that specific Firefox profile.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 3: Use the Profile Manager via Terminal","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 3: Use the Profile Manager via Terminal","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If you want to pull up the Firefox Profile Manager to choose a profile using your arrow keys, you can launch it via Terminal.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to open Spotlight Search.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Terminal","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Paste the following command and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"The Profile Manager window will appear. Use the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"arrows to select your profile, and press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to launch it.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Method 4: Use an Extension","depth":26,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Method 4: Use an Extension","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Just like on other operating systems, you can use an extension to mimic the Chrome-style profile switcher and assign a Mac keyboard shortcut to it.","depth":27,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Install the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile Switcher for Firefox","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"extension.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Press","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to open the Add-ons page.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Click the","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gear icon","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"at the top right and select","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Manage Extension Shortcuts","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Find the Profile Switcher extension and record a custom shortcut (like","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":") to open the menu instantly.","depth":29,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Good response","depth":23,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bad response","depth":23,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Redo","depth":23,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Share and export","depth":22,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Copy","depth":23,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Show more options","depth":22,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextArea","text":"Ask Gemini","depth":20,"value":"Ask Gemini","help_text":"","role_description":"text entry area","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Gemini","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open upload file menu","depth":20,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tools","depth":18,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open mode picker","depth":20,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pro","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Microphone","depth":19,"role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gemini is AI and can make mistakes, including about people.","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Your privacy and Gemini Opens in a new window","depth":17,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Your privacy and Gemini","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Opens in a new window","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Summarize page","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summarize page","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Browser Add-ons","depth":8,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Browser Add-ons","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extensions","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extensions","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Themes","depth":10,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Themes","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More…","depth":11,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"More…","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Firefox Add-ons Blog","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Firefox Add-ons Blog","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Extension Workshop","depth":9,"help_text":"Learn how to create extensions and themes","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Extension Workshop","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Developer Hub","depth":9,"help_text":"Submit and manage extensions and themes","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Developer Hub","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Log in","depth":9,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Log in","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"profile","depth":9,"value":"profile","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"profile","depth":10,"value":"profile","help_text":"","placeholder":"Find add-ons","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"profile","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Search","depth":9,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2,006 results found for \"profile\"","depth":9,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2,006 results found for \"profile\"","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Filter results","depth":9,"help_text":"Toggle contents","role_description":"switch","subrole":"AXSwitch","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Filter results","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sort by","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Add-on Type","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Badging","depth":11,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Search results","depth":10,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profile Picture Viewer","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Profile Picture Viewer","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Profile Picture Viewer","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile Picture Viewer Bypass profile picture guard and see user's profile picture in full size. How To Use: 1. Open user's profile page 2. Right-Click and Select \"Unlock full size profile picture\" Works on Facebook, Instagram, Tiktok.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 4 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Limited","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Limited","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"248 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"248 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Show Profile","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Show Profile","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Show Profile","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Display profile hint on window title or customized locations (with or without individual icon).","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 3.5 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"neo82","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"neo82","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"275 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"275 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Blackfire Profiler","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Blackfire Profiler","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Blackfire Profiler","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Profile your PHP application from your browser","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 4.6 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Blackfire","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Blackfire","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"922 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"922 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Profile Indicator","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Profile Indicator","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Profile Indicator","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Displays which Firefox profile is in use.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 3.3 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Bing","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bing","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"189 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"189 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Cookie Profile Switcher","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Cookie Profile Switcher","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Cookie Profile Switcher","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Store & Manage multiple cookie profiles per domain.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 4.6 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"emerysteele-1364597629.54","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"emerysteele-1364597629.54","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"142 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"142 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Go To Roblox Profile","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"Go To Roblox Profile","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Go To Roblox Profile","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pull up a Roblox user's profile by entering their username or ID.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 5 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"gtrpdev","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"gtrpdev","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"72 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"72 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"SteamProfilePreviewer","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"SteamProfilePreviewer","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SteamProfilePreviewer","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adds a preview button to the items on the Steam points shop to showcase them on YOUR profile.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 3.8 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Miko","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Miko","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"433 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"433 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"DG Edge - Claim your profile","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXLink","text":"DG Edge - Claim your profile","depth":12,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"DG Edge - Claim your profile","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Use this extension to automatically connect your DG Edge user to your GT7 player profile in order to access profile editing and access more features like setups uploading and more.","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rated 5 out of 5","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Simon Laudati","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Simon Laudati","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"185 users","depth":11,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"185 users","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8708437999688533152
|
1787458180016961670
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
Inbox (1) - [EMAIL] - Gmail
Sham DXP4800PLUS-B5F8
Inbox (1) - [EMAIL] - Gmail
Shameless • HBO Max
Shameless • HBO Max
Settings
Settings
firefox sidebar - Google Search
firefox sidebar - Google Search
How to use AI-enhanced tab groups | Firefox Help
How to use AI-enhanced tab groups | Firefox Help
Add-ons Manager
Add-ons Manager
Vimium – Get this Extension for 🦊 Firefox (en-US)
Vimium – Get this Extension for 🦊 Firefox (en-US)
Irán – Denník N
Irán – Denník N
Vimium Options
Vimium Options
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Loď Orion úspešne pristála na Zemi. Desať vecí, ktoré si pamätať o misii Artemis II — Denník N
Machines - Tailscale
Machines - Tailscale
Screenpipe Dashboard
Screenpipe Dashboard
Add-ons for Firefox (en-US)
Add-ons for Firefox (en-US)
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Pazaruvaj.com — Знак, че е време за най-добрите оферти
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Bitwarden Password Manager – Get this Extension for 🦊 Firefox (en-US)
Browser Extension Getting Started | Bitwarden
Browser Extension Getting Started | Bitwarden
Extensions – Add-ons for Firefox (en-US)
Extensions – Add-ons for Firefox (en-US)
Dangbei Atom Review - RTINGS.com
Dangbei Atom Review - RTINGS.com
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Screenpipe: Open Source 24/7 Screen & Audio Capture : r/software
Search results for "profile" – Add-ons for Firefox (en-US)
Search results for "profile" – Add-ons for Firefox (en-US)
Close tab
New Tab
Customize sidebar
Close Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
AI Chat settings
Close
Google Account: Lukáš Koválik ([EMAIL])
Main menu
New chat
Share conversation
Open menu for conversation actions.
Conversation with Gemini
Conversation with Gemini
Copy prompt
You said can switch between profiles in firefox using keyboard?
You said
can switch between profiles in firefox using keyboard?
Listen
Show more options
Show thinking
Gemini said
Gemini said
Yes, you can switch between Firefox profiles using your keyboard, though Firefox doesn't have a single, dedicated built-in shortcut for this like some other browsers do.
Here are the best ways to do it using only your keyboard, ranging from built-in methods to setting up custom hotkeys.
Method 1: The Built-in about:profiles Page
Method 1: The Built-in
about:profiles
Page
This is the fastest native way to launch a different profile without leaving your current keyboard workflow.
Press
(Windows/Linux) or
(Mac) to focus the address bar.
Type
and press
.
Use the
key to navigate through the page until you highlight the
"Launch profile in new browser"
button under your desired profile.
Press
to open it.
Method 2: Create Custom OS Shortcuts (Windows)
Method 2: Create Custom OS Shortcuts (Windows)
If you switch between specific profiles frequently, you can create desktop shortcuts for each profile and assign a global keyboard hotkey to them.
Locate your Firefox shortcut on your desktop, copy it, and paste a new version.
Right-click the new shortcut and select
Properties
.
In the
Shortcut
tab, look at the
Target
field. Add a space at the very end, followed by
.
Still in the Properties window, click inside the
Shortcut key
box.
Press the key combination you want to use (e.g.,
).
Click
Apply
and
OK
.
Now, pressing that key combination from anywhere in Windows will instantly launch that specific Firefox profile.
Method 3: Use the Profile Manager on Launch
Method 3: Use the Profile Manager on Launch
If you want to choose your profile every time you open Firefox using keyboard arrows:
Press
(Windows) to open the Run dialog.
Type
and press
.
The Firefox Profile Manager will pop up. You can use the
and
arrow keys to select your profile, and press
to launch it.
Method 4: Use an Extension
Method 4: Use an Extension
If you want an experience closer to Chrome's profile switcher (which allows for easier hotkey mapping within the browser UI), you can use a community-favorite extension.
Profile Switcher for Firefox:
This extension adds a profile menu to your toolbar. Once installed, you can go into Firefox's Add-on settings (press
> click the gear icon > select "Manage Extension Shortcuts") and assign a custom keyboard shortcut to open the Profile Switcher menu.
Good response
Bad response
Share and export
Copy
Show more options
Copy prompt
Edit
You said I am on mac
You said
I am on mac
Listen
Show more options
Show thinking
Gemini said
Gemini said
Got it! Since you are on a Mac, the methods change a bit because macOS handles application shortcuts and command-line arguments differently than Windows.
Here are the best keyboard-friendly ways to switch Firefox profiles specifically for macOS:
Method 1: The Built-in about:profiles Page
Method 1: The Built-in
about:profiles
Page
This is still the quickest way to do it natively without leaving the browser.
Press
to focus the address bar.
Type
and press
.
Press
to navigate through the page until you highlight the
"Launch profile in new browser"
button under your desired profile.
Press
to open it.
Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)
Method 2: Create a Custom Global Hotkey (Using Apple Shortcuts)
macOS doesn't let you add hotkeys directly to app icons like Windows does, but you can easily achieve the exact same thing using the built-in Apple
Shortcuts
app.
Open the
Shortcuts
app on your Mac.
Click the
button at the top to create a new shortcut.
In the search bar on the right, type
Run Shell Script
and double-click it to add it to your workflow.
In the script box that appears, paste the following command (replace "Work" with the exact name of your Firefox profile):
Click the
Info (i)
icon in the right sidebar (or click the shortcut name at the top and select
Details
).
Click
Add Keyboard Shortcut
and press the key combination you want to use (e.g.,
).
Now, pressing that combination anywhere on your Mac will instantly open that specific Firefox profile.
Method 3: Use the Profile Manager via Terminal
Method 3: Use the Profile Manager via Terminal
If you want to pull up the Firefox Profile Manager to choose a profile using your arrow keys, you can launch it via Terminal.
Press
to open Spotlight Search.
Type
Terminal
and press
.
Paste the following command and press
:
The Profile Manager window will appear. Use the
and
arrows to select your profile, and press
to launch it.
Method 4: Use an Extension
Method 4: Use an Extension
Just like on other operating systems, you can use an extension to mimic the Chrome-style profile switcher and assign a Mac keyboard shortcut to it.
Install the
Profile Switcher for Firefox
extension.
Press
to open the Add-ons page.
Click the
Gear icon
at the top right and select
Manage Extension Shortcuts
.
Find the Profile Switcher extension and record a custom shortcut (like
) to open the menu instantly.
Good response
Bad response
Redo
Share and export
Copy
Show more options
Ask Gemini
Ask Gemini
Open upload file menu
Tools
Open mode picker
Pro
Microphone
Gemini is AI and can make mistakes, including about people.
Your privacy and Gemini Opens in a new window
Your privacy and Gemini
Opens in a new window
Summarize page
Summarize page
Firefox Browser Add-ons
Firefox Browser Add-ons
Extensions
Extensions
Themes
Themes
More…
More…
Firefox Add-ons Blog
Firefox Add-ons Blog
Extension Workshop
Extension Workshop
Developer Hub
Developer Hub
Log in
Log in
Search
profile
profile
profile
Search
Search
2,006 results found for "profile"
2,006 results found for "profile"
Filter results
Filter results
Sort by
Add-on Type
Badging
Search results
Profile Picture Viewer
Profile Picture Viewer
Profile Picture Viewer
Profile Picture Viewer Bypass profile picture guard and see user's profile picture in full size. How To Use: 1. Open user's profile page 2. Right-Click and Select "Unlock full size profile picture" Works on Facebook, Instagram, Tiktok.
Rated 4 out of 5
Limited
Limited
248 users
248 users
Show Profile
Show Profile
Show Profile
Display profile hint on window title or customized locations (with or without individual icon).
Rated 3.5 out of 5
neo82
neo82
275 users
275 users
Blackfire Profiler
Blackfire Profiler
Blackfire Profiler
Profile your PHP application from your browser
Rated 4.6 out of 5
Blackfire
Blackfire
922 users
922 users
Profile Indicator
Profile Indicator
Profile Indicator
Displays which Firefox profile is in use.
Rated 3.3 out of 5
Bing
Bing
189 users
189 users
Cookie Profile Switcher
Cookie Profile Switcher
Cookie Profile Switcher
Store & Manage multiple cookie profiles per domain.
Rated 4.6 out of 5
emerysteele-1364597629.54
emerysteele-1364597629.54
142 users
142 users
Go To Roblox Profile
Go To Roblox Profile
Go To Roblox Profile
Pull up a Roblox user's profile by entering their username or ID.
Rated 5 out of 5
gtrpdev
gtrpdev
72 users
72 users
SteamProfilePreviewer
SteamProfilePreviewer
SteamProfilePreviewer
Adds a preview button to the items on the Steam points shop to showcase them on YOUR profile.
Rated 3.8 out of 5
Miko
Miko
433 users
433 users
DG Edge - Claim your profile
DG Edge - Claim your profile
DG Edge - Claim your profile
Use this extension to automatically connect your DG Edge user to your GT7 player profile in order to access profile editing and access more features like setups uploading and more.
Rated 5 out of 5
Simon Laudati
Simon Laudati
185 users
185 users...
|
2130
|
|
44430
|
939
|
23
|
2026-04-17T08:47:25.142071+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776415645142_m1.jpg...
|
Firefox
|
Meet - Daily - Processing — Work
|
True
|
meet.google.com/xpx-omah-rkn
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Processing
Close tab
New Tab
Open G Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Ilian Kyuchukov's presentation from your main screen
You can't unmute someone else's presentation
More options for Ilian Kyuchukov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Ilian Kyuchukov to your main screen
Mute Ilian Kyuchukov's microphone
More options for Ilian Kyuchukov
Ilian Kyuchukov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Vasil Vasilev to your main screen
Mute Vasil Vasilev's microphone
More options for Vasil Vasilev
Vasil Vasilev
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Mihail Mihaylov to your main screen
Mute Mihail Mihaylov's microphone
More options for Mihail Mihaylov
Mihail Mihaylov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
11:47
AM
Daily - Processing
Daily - Processing
Audio settings
Turn on microphone
Video settings
Turn off camera
Ilian Kyuchukov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Processing","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Ilian Kyuchukov (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.18055555,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ilian Kyuchukov (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.18055555,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":22,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.5798611,"top":0.62833333,"width":0.14652778,"height":0.08888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.7239583,"top":0.6427778,"width":0.08090278,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.7017361,"top":0.6388889,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Unpin Ilian Kyuchukov's presentation from your main screen","depth":13,"bounds":{"left":0.346875,"top":0.5083333,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else's presentation","depth":13,"bounds":{"left":0.37465277,"top":0.5061111,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Ilian Kyuchukov","depth":13,"bounds":{"left":0.40520832,"top":0.5083333,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.6315972,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"bounds":{"left":0.6649306,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"bounds":{"left":0.6982639,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7861111,"top":0.27611113,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9302083,"top":0.2911111,"width":0.069791675,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9079861,"top":0.28666666,"width":0.092013896,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Ilian Kyuchukov to your main screen","depth":13,"bounds":{"left":0.76180553,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Ilian Kyuchukov's microphone","depth":13,"bounds":{"left":0.7895833,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Ilian Kyuchukov","depth":13,"bounds":{"left":0.8201389,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":17,"bounds":{"left":0.75451386,"top":0.36277777,"width":0.07986111,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.27611113,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.2911111,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.28666666,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":13,"bounds":{"left":0.8875,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":13,"bounds":{"left":0.9152778,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"bounds":{"left":0.9458333,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.8802083,"top":0.36277777,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7861111,"top":0.5338889,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9302083,"top":0.54888886,"width":0.069791675,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9079861,"top":0.54444444,"width":0.092013896,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Vasil Vasilev to your main screen","depth":13,"bounds":{"left":0.76180553,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Vasil Vasilev's microphone","depth":13,"bounds":{"left":0.7895833,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Vasil Vasilev","depth":13,"bounds":{"left":0.8201389,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Vasil Vasilev","depth":17,"bounds":{"left":0.75451386,"top":0.6205556,"width":0.061805554,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.5338889,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.54888886,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.54444444,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Mihail Mihaylov to your main screen","depth":13,"bounds":{"left":0.8875,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Mihail Mihaylov's microphone","depth":13,"bounds":{"left":0.9152778,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Mihail Mihaylov","depth":13,"bounds":{"left":0.9458333,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Mihail Mihaylov","depth":17,"bounds":{"left":0.8802083,"top":0.6205556,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.73888886,"top":0.7916667,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.665625,"top":0.8066667,"width":0.07569444,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.64618057,"top":0.80222225,"width":0.11736111,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":13,"bounds":{"left":0.8229167,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":13,"bounds":{"left":0.85347223,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":13,"bounds":{"left":0.8840278,"top":0.76666665,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.75381947,"top":0.87833333,"width":0.06875,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"bounds":{"left":0.96631944,"top":0.875,"width":0.018055556,"height":0.028888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11:47","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.025694445,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.07951389,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Processing","depth":12,"bounds":{"left":0.114583336,"top":0.9111111,"width":0.093055554,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Processing","depth":15,"bounds":{"left":0.114583336,"top":0.9444444,"width":0.093055554,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":13,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Ilian Kyuchukov is presenting","depth":12,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8708331859828041232
|
-6560648179365446852
|
visual_change
|
accessibility
|
NULL
|
Meet - Daily - Processing
Close tab
New Tab
Open G Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Ilian Kyuchukov's presentation from your main screen
You can't unmute someone else's presentation
More options for Ilian Kyuchukov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Ilian Kyuchukov to your main screen
Mute Ilian Kyuchukov's microphone
More options for Ilian Kyuchukov
Ilian Kyuchukov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Vasil Vasilev to your main screen
Mute Vasil Vasilev's microphone
More options for Vasil Vasilev
Vasil Vasilev
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Mihail Mihaylov to your main screen
Mute Mihail Mihaylov's microphone
More options for Mihail Mihaylov
Mihail Mihaylov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
11:47
AM
Daily - Processing
Daily - Processing
Audio settings
Turn on microphone
Video settings
Turn off camera
Ilian Kyuchukov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
NULL
|
|
44432
|
939
|
25
|
2026-04-17T08:47:31.182801+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776415651182_m1.jpg...
|
Firefox
|
Meet - Daily - Processing — Work
|
True
|
meet.google.com/xpx-omah-rkn
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Processing
Close tab
New Tab
Open G Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Ilian Kyuchukov's presentation from your main screen
You can't unmute someone else's presentation
More options for Ilian Kyuchukov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Ilian Kyuchukov to your main screen
Mute Ilian Kyuchukov's microphone
More options for Ilian Kyuchukov
Ilian Kyuchukov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Vasil Vasilev to your main screen
Mute Vasil Vasilev's microphone
More options for Vasil Vasilev
Vasil Vasilev
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Mihail Mihaylov to your main screen
Mute Mihail Mihaylov's microphone
More options for Mihail Mihaylov
Mihail Mihaylov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
11:47
AM
Daily - Processing
Daily - Processing
Audio settings
Turn on microphone
Video settings
Turn off camera
Ilian Kyuchukov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Processing","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Ilian Kyuchukov (Presenting, annotating)","depth":12,"bounds":{"left":0.07534722,"top":0.101111114,"width":0.18055555,"height":0.022222223},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ilian Kyuchukov (Presenting, annotating)","depth":13,"bounds":{"left":0.07534722,"top":0.10222222,"width":0.18055555,"height":0.020555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":15,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":22,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":14,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":17,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":22,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":21,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.5798611,"top":0.62833333,"width":0.14652778,"height":0.08888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.7239583,"top":0.6427778,"width":0.08090278,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.7017361,"top":0.6388889,"width":0.11076389,"height":0.05666667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Unpin Ilian Kyuchukov's presentation from your main screen","depth":13,"bounds":{"left":0.346875,"top":0.5083333,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else's presentation","depth":13,"bounds":{"left":0.37465277,"top":0.5061111,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Ilian Kyuchukov","depth":13,"bounds":{"left":0.40520832,"top":0.5083333,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":13,"bounds":{"left":0.6315972,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":13,"bounds":{"left":0.6649306,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":13,"bounds":{"left":0.6982639,"top":0.83111113,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7861111,"top":0.27611113,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9302083,"top":0.2911111,"width":0.069791675,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9079861,"top":0.28666666,"width":0.092013896,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Ilian Kyuchukov to your main screen","depth":13,"bounds":{"left":0.76180553,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Ilian Kyuchukov's microphone","depth":13,"bounds":{"left":0.7895833,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Ilian Kyuchukov","depth":13,"bounds":{"left":0.8201389,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":17,"bounds":{"left":0.75451386,"top":0.36277777,"width":0.07986111,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.27611113,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.2911111,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.28666666,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":13,"bounds":{"left":0.8875,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":13,"bounds":{"left":0.9152778,"top":0.2488889,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":13,"bounds":{"left":0.9458333,"top":0.25111112,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.8802083,"top":0.36277777,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.7861111,"top":0.5338889,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.9302083,"top":0.54888886,"width":0.069791675,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.9079861,"top":0.54444444,"width":0.092013896,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Vasil Vasilev to your main screen","depth":13,"bounds":{"left":0.76180553,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Vasil Vasilev's microphone","depth":13,"bounds":{"left":0.7895833,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Vasil Vasilev","depth":13,"bounds":{"left":0.8201389,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Vasil Vasilev","depth":17,"bounds":{"left":0.75451386,"top":0.6205556,"width":0.061805554,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.91180557,"top":0.5338889,"width":0.08819443,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":1.0,"top":0.54888886,"width":-0.05590272,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":1.0,"top":0.54444444,"width":-0.03368056,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Mihail Mihaylov to your main screen","depth":13,"bounds":{"left":0.8875,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Mihail Mihaylov's microphone","depth":13,"bounds":{"left":0.9152778,"top":0.50666666,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Mihail Mihaylov","depth":13,"bounds":{"left":0.9458333,"top":0.5088889,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Mihail Mihaylov","depth":17,"bounds":{"left":0.8802083,"top":0.6205556,"width":0.07847222,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pop out this video More screens are more fun. Play this video while you do other things.","depth":15,"bounds":{"left":0.73888886,"top":0.7916667,"width":0.14652778,"height":0.07722222},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pop out this video","depth":17,"bounds":{"left":0.665625,"top":0.8066667,"width":0.07569444,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"More screens are more fun. Play this video while you do other things.","depth":16,"bounds":{"left":0.64618057,"top":0.80222225,"width":0.11736111,"height":0.045},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":13,"bounds":{"left":0.8229167,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":13,"bounds":{"left":0.85347223,"top":0.7644445,"width":0.030555556,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":13,"bounds":{"left":0.8840278,"top":0.76666665,"width":0.027777778,"height":0.044444446},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"bounds":{"left":0.75381947,"top":0.87833333,"width":0.06875,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":14,"bounds":{"left":0.96631944,"top":0.875,"width":0.018055556,"height":0.028888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"11:47","depth":12,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.025694445,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":12,"bounds":{"left":0.07951389,"top":0.9444444,"width":0.017708333,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Processing","depth":12,"bounds":{"left":0.114583336,"top":0.9111111,"width":0.093055554,"height":0.08888888},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Processing","depth":15,"bounds":{"left":0.114583336,"top":0.9444444,"width":0.093055554,"height":0.022777777},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":13,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":13,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":13,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":13,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Ilian Kyuchukov is presenting","depth":12,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":12,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":13,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":12,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":12,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":12,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":12,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":12,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":12,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8708331859828041232
|
-6560648179365446852
|
visual_change
|
accessibility
|
NULL
|
Meet - Daily - Processing
Close tab
New Tab
Open G Meet - Daily - Processing
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Ilian Kyuchukov (Presenting, annotating)
Ilian Kyuchukov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Unpin Ilian Kyuchukov's presentation from your main screen
You can't unmute someone else's presentation
More options for Ilian Kyuchukov
Zoom in
Open in new window
Enter Full Screen
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Ilian Kyuchukov to your main screen
Mute Ilian Kyuchukov's microphone
More options for Ilian Kyuchukov
Ilian Kyuchukov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Vasil Vasilev to your main screen
Mute Vasil Vasilev's microphone
More options for Vasil Vasilev
Vasil Vasilev
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
Pin Mihail Mihaylov to your main screen
Mute Mihail Mihaylov's microphone
More options for Mihail Mihaylov
Mihail Mihaylov
Pop out this video More screens are more fun. Play this video while you do other things.
Pop out this video
More screens are more fun. Play this video while you do other things.
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
11:47
AM
Daily - Processing
Daily - Processing
Audio settings
Turn on microphone
Video settings
Turn off camera
Ilian Kyuchukov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools...
|
NULL
|
|
8145
|
158
|
16
|
2026-04-14T06:37:08.444178+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776148628444_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
BitwardenFileEditViewAccountWindowHelp-zsh100% < BitwardenFileEditViewAccountWindowHelp-zsh100% <47Tue 14 Apr 9:37:08181-zsh₴7* Unable to acce...O 88DOCKERaudio devices• 81DEV (-zsh)О ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh86disabledyou are using local processing. all your data stays on your computer.warning: telemetry is enabled. only error-level data will be sent.todisable, use the --disable-telemetry flag.checklatestchangeshere:https://github.com/screenpipe/screenpipe/releases2026-04-14T09:23:19.025225ZINFO screenpipe: starting UI event capture2026-04-14709:23:19.0240422INFOscreenpipe_core::pipes:2026-04-14T09:23:19.034460ZWARNscreenpipe:2026-04-14T09:23:19.035048ZINFOpipipe scheduler started (generation 2)agent install failed: bun not found - installfrom https://bun.shscreenpipe_engine::power::manager: initialpower profile: Performance (on_ac=true, battery=Some(100))2026-04-14709:23:19.0417392INFOscreenpipe_engine::ui_recorder: Starting UI event capture2026-04-14T09:23:19.057947ZINFOscreenpipe_engine::ui_recorder: UI recording session started: c7672ba6-54dd-483e-9512-949b51a2bd492026-04-14T09:23:19.058064ZINFOscreenpipe_engine:: calendar_speaker_id: speaker identification: started (user_name=<not set>)2026-04-14T09:23:19.058114ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-13 06:23:19.058103 UTC to2026-04-142026-04-14T09:23:19.062532ZINFO06:23:19.058103 UTC)screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)2026-04-14T09:23:19.066551ZINFOscreenpipe_engine::server: Server listening on [IP_ADDRESS]:30302026-04-14T09:23:19.080775ZINFOscreenpipe_connect::mdns: mdns: advertising screenpipe on port 30302026-04-14T09:23:19.697314ZINFO2026-04-14T09:23:19.985445ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 3756 frame entries, coverage from 2026-04-13 06:23:19.058103 UTC2026-04-14T09:23:19.985474Zscreenpipe_engine::vision_manager::manager: Starting vision recordingINFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)2026-04-14T09:23:19.985515ZINFOscreenpipe_engine::event_driven_capture:event-driven capture started for monitor 1 (device: monitor_1)2026-04-14T09:23:20.492622ZINFOscreenpipe_engine::vision_manager::manager: Starting vision recording2026-04-14T09:23:20.492664ZINFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)2026-04-14T09:23:20.492694ZINFOscreenpipe_engine::vision_manager::monitor_watcher: Starting2026-04-14T09:23:20.492726ZINFOscreenpipe_engine::event_driven_capture:event-driven capture started for monitor 2 (device: monitor_2)2026-04-14T09:23:21.313246ZINFOsck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900,2fps, 0 excluded)2026-04-14T09:23:22.387611ZINFOsck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440,2fps, 0 excluded)2026-04-14T09:23:22.954948ZINFOscreenpipe_engine::event_driven_capture: startup capture for monitor 1:2026-04-14T09:23:23.488645ZINFO2026-04-14T09:23:24.063719ZINFOscreenpipe_engine::event_driven_capture:frame_id=8037, dur=1082msscreenpipe_engine::retention:startup capture for monitor 2: frame_id=8038, dur=1012msretention: initialized with 14d retention2026-04-14T09:23:24.063951ZINFOscreenpipe: local retention auto-enabled (14 days)2026-04-14T09:24:19.745739ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames2026-04-14T09:24:23.350916ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 51 frames, 6.7MB → 2.6MB (2.6x),JPEGs deleted2026-04-14T09:24:26.531119ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 55 frames, 10.6MB → 3.9MB (2.7x), 55 JPEGS deleted2026-04-14T09:28:19.055456ZINFOscreenpipe_engine::server: api_usage_5min: 1 requests2026-04-14T09:28:54.061635ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-31T06:28:54.061630+00:00 (14d retention)2026-04-14T09:29:26.561625ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction:found 2eligible frames2026-04-14T09:33:54.056707ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-31106:33:54.056680+00:00 (14d retention)2026-04-14T09:34:26.581293ZINFO2026-04-14T09:34:27.123519ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 11screenpipe_engine::snapshot_compaction: snapshotcompaction: 4 frames, 0.9MB → 0.6MB (1.6x),2026-04-14T09:34:28.092531ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 7 frames, 1.4MB → 0.8MB (1.8X), 7 JPEGs deleted...
|
NULL
|
-8707699991114170330
|
NULL
|
click
|
ocr
|
NULL
|
BitwardenFileEditViewAccountWindowHelp-zsh100% < BitwardenFileEditViewAccountWindowHelp-zsh100% <47Tue 14 Apr 9:37:08181-zsh₴7* Unable to acce...O 88DOCKERaudio devices• 81DEV (-zsh)О ₴2APP (-zsh)• *3-zsh• x4|-zsh• 85-zsh86disabledyou are using local processing. all your data stays on your computer.warning: telemetry is enabled. only error-level data will be sent.todisable, use the --disable-telemetry flag.checklatestchangeshere:https://github.com/screenpipe/screenpipe/releases2026-04-14T09:23:19.025225ZINFO screenpipe: starting UI event capture2026-04-14709:23:19.0240422INFOscreenpipe_core::pipes:2026-04-14T09:23:19.034460ZWARNscreenpipe:2026-04-14T09:23:19.035048ZINFOpipipe scheduler started (generation 2)agent install failed: bun not found - installfrom https://bun.shscreenpipe_engine::power::manager: initialpower profile: Performance (on_ac=true, battery=Some(100))2026-04-14709:23:19.0417392INFOscreenpipe_engine::ui_recorder: Starting UI event capture2026-04-14T09:23:19.057947ZINFOscreenpipe_engine::ui_recorder: UI recording session started: c7672ba6-54dd-483e-9512-949b51a2bd492026-04-14T09:23:19.058064ZINFOscreenpipe_engine:: calendar_speaker_id: speaker identification: started (user_name=<not set>)2026-04-14T09:23:19.058114ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warming from DB (2026-04-13 06:23:19.058103 UTC to2026-04-142026-04-14T09:23:19.062532ZINFO06:23:19.058103 UTC)screenpipe_engine::meeting_detector: meeting v2: detection loop started (base_interval=5s, profiles=12)2026-04-14T09:23:19.066551ZINFOscreenpipe_engine::server: Server listening on [IP_ADDRESS]:30302026-04-14T09:23:19.080775ZINFOscreenpipe_connect::mdns: mdns: advertising screenpipe on port 30302026-04-14T09:23:19.697314ZINFO2026-04-14T09:23:19.985445ZINFOscreenpipe_engine::hot_frame_cache: hot_frame_cache: warmed with 3756 frame entries, coverage from 2026-04-13 06:23:19.058103 UTC2026-04-14T09:23:19.985474Zscreenpipe_engine::vision_manager::manager: Starting vision recordingINFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 1 (device: monitor_1)2026-04-14T09:23:19.985515ZINFOscreenpipe_engine::event_driven_capture:event-driven capture started for monitor 1 (device: monitor_1)2026-04-14T09:23:20.492622ZINFOscreenpipe_engine::vision_manager::manager: Starting vision recording2026-04-14T09:23:20.492664ZINFOscreenpipe_engine::vision_manager::manager: Starting event-driven capture for monitor 2 (device: monitor_2)2026-04-14T09:23:20.492694ZINFOscreenpipe_engine::vision_manager::monitor_watcher: Starting2026-04-14T09:23:20.492726ZINFOscreenpipe_engine::event_driven_capture:event-driven capture started for monitor 2 (device: monitor_2)2026-04-14T09:23:21.313246ZINFOsck_rs::stream_manager: persistent SCK stream started for display 1 (1440x900,2fps, 0 excluded)2026-04-14T09:23:22.387611ZINFOsck_rs::stream_manager: persistent SCK stream started for display 2 (2560x1440,2fps, 0 excluded)2026-04-14T09:23:22.954948ZINFOscreenpipe_engine::event_driven_capture: startup capture for monitor 1:2026-04-14T09:23:23.488645ZINFO2026-04-14T09:23:24.063719ZINFOscreenpipe_engine::event_driven_capture:frame_id=8037, dur=1082msscreenpipe_engine::retention:startup capture for monitor 2: frame_id=8038, dur=1012msretention: initialized with 14d retention2026-04-14T09:23:24.063951ZINFOscreenpipe: local retention auto-enabled (14 days)2026-04-14T09:24:19.745739ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 108 eligible frames2026-04-14T09:24:23.350916ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 51 frames, 6.7MB → 2.6MB (2.6x),JPEGs deleted2026-04-14T09:24:26.531119ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 55 frames, 10.6MB → 3.9MB (2.7x), 55 JPEGS deleted2026-04-14T09:28:19.055456ZINFOscreenpipe_engine::server: api_usage_5min: 1 requests2026-04-14T09:28:54.061635ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-31T06:28:54.061630+00:00 (14d retention)2026-04-14T09:29:26.561625ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction:found 2eligible frames2026-04-14T09:33:54.056707ZINFOscreenpipe_engine::retention: retention: cleaning up data before 2026-03-31106:33:54.056680+00:00 (14d retention)2026-04-14T09:34:26.581293ZINFO2026-04-14T09:34:27.123519ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 11screenpipe_engine::snapshot_compaction: snapshotcompaction: 4 frames, 0.9MB → 0.6MB (1.6x),2026-04-14T09:34:28.092531ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 7 frames, 1.4MB → 0.8MB (1.8X), 7 JPEGs deleted...
|
NULL
|
|
60909
|
1312
|
26
|
2026-04-21T06:24:53.832298+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752693832_m1.jpg...
|
iTerm2
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesDOCKER881 iTerm2ShellEditViewSessionScriptsProfilesDOCKER881Window-zshHelp-zsh* Build full day activity summary from Screenpipe* Build full day activity su... 84screenpipe"Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of SalesforceAО 85-zsh100% <Tue 21 Apr 9:24:53T81₴6APP (-zsh)*7+Also visible in backlog (not opened individually but listed):TicketJY-20503JY-20503JY-20699JY-20412JY-20361JY-19628JY-20625JY-20410TitleBatch insert/update CRM objects in...Batch insert/update CRM objectsWrong formatting for summary in...Change Auto-log delayAJ Panorama for Call Scoring in ODEvaluation of AJ PanoramaJiminny MCP ConnectorUpdate the template...EpicCRM SyncCRM SyncPlatform SprintAutomated ReportsAsk AnythingEstimate2.54Key outcomes from the session:- JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting- JY-20501 description and JY-20500 description were updated by Stefka Stoyanova during the call- JY-20613 had its estimate confirmed at 2.5 points- Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows* Brewed for 1m 57s* recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot,both moved to Sprint3 Q2. Next: checkif sprintassignments saved correctly in Jira. (disable recaps in /config)? for shortcuts~112k uncached • /clear to start freshnew task? /clear to save 113.2k tokens...
|
NULL
|
-8707483837039654865
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesDOCKER881 iTerm2ShellEditViewSessionScriptsProfilesDOCKER881Window-zshHelp-zsh* Build full day activity summary from Screenpipe* Build full day activity su... 84screenpipe"Description mirrors JY-20500 but targets HubSpot objects (deals, accounts, contacts) instead of SalesforceAО 85-zsh100% <Tue 21 Apr 9:24:53T81₴6APP (-zsh)*7+Also visible in backlog (not opened individually but listed):TicketJY-20503JY-20503JY-20699JY-20412JY-20361JY-19628JY-20625JY-20410TitleBatch insert/update CRM objects in...Batch insert/update CRM objectsWrong formatting for summary in...Change Auto-log delayAJ Panorama for Call Scoring in ODEvaluation of AJ PanoramaJiminny MCP ConnectorUpdate the template...EpicCRM SyncCRM SyncPlatform SprintAutomated ReportsAsk AnythingEstimate2.54Key outcomes from the session:- JY-20500 and JY-20501 were pulled into Platform Sprint 3 Q2 and ranked during the meeting- JY-20501 description and JY-20500 description were updated by Stefka Stoyanova during the call- JY-20613 had its estimate confirmed at 2.5 points- Figma (Project Phoenix) was used to walk through JY-20676/JY-20615 UI flows* Brewed for 1m 57s* recap: Platform refinement meeting reviewed 5 Jira tickets, mainly JY-20500/20501 batch CRM sync for Salesforce and HubSpot,both moved to Sprint3 Q2. Next: checkif sprintassignments saved correctly in Jira. (disable recaps in /config)? for shortcuts~112k uncached • /clear to start freshnew task? /clear to save 113.2k tokens...
|
NULL
|
|
79455
|
2062
|
12
|
2026-04-24T16:26:11.684176+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777047971684_m2.jpg...
|
Firefox
|
DXP4800PLUS-B5F8 — Personal
|
True
|
nas.lakylak.xyz/desktop/#/
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
930
B/s
132
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup
Files
Personal Folder
Shared Folder
User Folder
Tag
Recycle Bin
Shared Folder
Documents
Фактури
Mar-Apr 2026
Shared Folder
Documents
Фактури
Mar-Apr 2026
Please enter
Name
Size
Type
Modification date
...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.23287898,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.26961437,"top":0.0518755,"width":0.03656915,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"(56) Inbox | kovaliklukas@proton.me | Proton Mail","depth":4,"bounds":{"left":0.30618352,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Welcome back","depth":4,"bounds":{"left":0.23105054,"top":0.09497207,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Welcome back","depth":5,"bounds":{"left":0.2443484,"top":0.10614525,"width":0.025265958,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":4,"bounds":{"left":0.23105054,"top":0.12769353,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com","depth":5,"bounds":{"left":0.2443484,"top":0.13886672,"width":0.26263297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Today's Deals","depth":4,"bounds":{"left":0.23105054,"top":0.16041501,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Today's Deals","depth":5,"bounds":{"left":0.2443484,"top":0.17158818,"width":0.024102394,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"architecture - screenpipe docs","depth":4,"bounds":{"left":0.23105054,"top":0.19313647,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"architecture - screenpipe docs","depth":5,"bounds":{"left":0.2443484,"top":0.20430966,"width":0.053523935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.23105054,"top":0.22585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Code works better when you stop treating it like a machine - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.2443484,"top":0.23703113,"width":0.1747008,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Screenpipe — Archive","depth":4,"bounds":{"left":0.23105054,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.2443484,"top":0.2697526,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.23105054,"top":0.29130086,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: archive.db","depth":5,"bounds":{"left":0.2443484,"top":0.30247405,"width":0.040724736,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SQLite Web: db.sqlite","depth":4,"bounds":{"left":0.23105054,"top":0.32402235,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SQLite Web: db.sqlite","depth":5,"bounds":{"left":0.2443484,"top":0.33519554,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Claude Platform","depth":4,"bounds":{"left":0.23105054,"top":0.3567438,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Claude Platform","depth":5,"bounds":{"left":0.2443484,"top":0.367917,"width":0.027925532,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":4,"bounds":{"left":0.23105054,"top":0.38946527,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Hey @louis030195 Ill check during my - screenpipe.com","depth":5,"bounds":{"left":0.2443484,"top":0.40063846,"width":0.09790558,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":4,"bounds":{"left":0.23105054,"top":0.42218676,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub","depth":5,"bounds":{"left":0.2443484,"top":0.43335995,"width":0.22556517,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":4,"bounds":{"left":0.23105054,"top":0.45490822,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Gong Pricing in 2026: Costs, Plans & Is It Worth It?","depth":5,"bounds":{"left":0.2443484,"top":0.4660814,"width":0.08826463,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.23105054,"top":0.48762968,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - kovaliklukas@gmail.com - Gmail","depth":5,"bounds":{"left":0.2443484,"top":0.49880287,"width":0.28075132,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.23387633,"top":0.5219473,"width":0.108211435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.23387633,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.24484707,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.25598404,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.26712102,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Bitwarden","depth":6,"bounds":{"left":0.27825797,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"930","depth":15,"bounds":{"left":0.92769283,"top":0.06264964,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93367684,"top":0.06304868,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"132","depth":15,"bounds":{"left":0.92769283,"top":0.07222666,"width":0.005984043,"height":0.008379889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"B/s","depth":15,"bounds":{"left":0.93367684,"top":0.0726257,"width":0.004155585,"height":0.0075818035},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":13,"bounds":{"left":0.36768618,"top":0.1707901,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Control Panel","depth":13,"bounds":{"left":0.35854387,"top":0.2697526,"width":0.02825798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storage","depth":13,"bounds":{"left":0.3645279,"top":0.36871508,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"App Center","depth":13,"bounds":{"left":0.36087102,"top":0.46767756,"width":0.023603724,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Logs","depth":13,"bounds":{"left":0.36768618,"top":0.5666401,"width":0.009973404,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support","depth":13,"bounds":{"left":0.3645279,"top":0.66560256,"width":0.016289894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Task Manager","depth":13,"bounds":{"left":0.35804522,"top":0.76456505,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Universal Search","depth":13,"bounds":{"left":0.35488698,"top":0.86352754,"width":0.03557181,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Music","depth":13,"bounds":{"left":0.41439494,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cloud Drives","depth":13,"bounds":{"left":0.40724733,"top":0.2697526,"width":0.026595745,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Theater","depth":13,"bounds":{"left":0.41256648,"top":0.36871508,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Photos","depth":13,"bounds":{"left":0.41323137,"top":0.46767756,"width":0.01462766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Online Office","depth":13,"bounds":{"left":0.40708113,"top":0.5666401,"width":0.026928192,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TextEdit","depth":13,"bounds":{"left":0.41223404,"top":0.66560256,"width":0.01662234,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Virtual Machine","depth":13,"bounds":{"left":0.40458778,"top":0.76456505,"width":0.031914894,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Downloads","depth":13,"bounds":{"left":0.4090758,"top":0.86352754,"width":0.022938829,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DLNA","depth":13,"bounds":{"left":0.46226728,"top":0.1707901,"width":0.012300532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"File Version Explorer","depth":13,"bounds":{"left":0.44697472,"top":0.2697526,"width":0.04288564,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Security","depth":13,"bounds":{"left":0.45994017,"top":0.36871508,"width":0.016954787,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jellyfin-HT","depth":13,"bounds":{"left":0.4574468,"top":0.46767756,"width":0.021941489,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAN Manager","depth":13,"bounds":{"left":0.4537899,"top":0.5666401,"width":0.02925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Vault","depth":13,"bounds":{"left":0.4632646,"top":0.66560256,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Snapshot","depth":13,"bounds":{"left":0.4586104,"top":0.76456505,"width":0.019614361,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Comics","depth":13,"bounds":{"left":0.46060506,"top":0.86352754,"width":0.015625,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sync & Backup","depth":13,"bounds":{"left":0.50049865,"top":0.1707901,"width":0.03158245,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"","depth":10,"bounds":{"left":0.9025931,"top":0.19473264,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":11,"bounds":{"left":0.90392286,"top":0.19792499,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.7159242,"top":0.19872306,"width":0.008976064,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.5242686,"top":0.23064645,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Personal Folder","depth":21,"bounds":{"left":0.53025264,"top":0.22825219,"width":0.037732713,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.5242686,"top":0.25937748,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.53025264,"top":0.25698325,"width":0.033909574,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.5242686,"top":0.28810853,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"User Folder","depth":21,"bounds":{"left":0.53025264,"top":0.2857143,"width":0.028424202,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.5242686,"top":0.31683958,"width":0.0034906915,"height":0.007980846},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tag","depth":21,"bounds":{"left":0.53025264,"top":0.31444532,"width":0.010472074,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":17,"bounds":{"left":0.52360374,"top":0.7932961,"width":0.0066489363,"height":0.015961692},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recycle Bin","depth":17,"bounds":{"left":0.53291225,"top":0.79489225,"width":0.024601065,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.60455453,"top":0.23743017,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.60754657,"top":0.24461293,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.61519283,"top":0.23743017,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.61818486,"top":0.24461293,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.62982047,"top":0.23743017,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.6328125,"top":0.24461293,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.6477726,"top":0.24381484,"width":0.029587766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.679355,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Documents","depth":21,"bounds":{"left":0.6853391,"top":0.24381484,"width":0.0234375,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.71077126,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Фактури","depth":21,"bounds":{"left":0.71675533,"top":0.24381484,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.73670214,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mar-Apr 2026","depth":21,"bounds":{"left":0.74268615,"top":0.24381484,"width":0.028424202,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Shared Folder","depth":21,"bounds":{"left":0.6477726,"top":0.24381484,"width":0.029587766,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.679355,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Documents","depth":21,"bounds":{"left":0.6853391,"top":0.24381484,"width":0.0234375,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.71077126,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Фактури","depth":21,"bounds":{"left":0.71675533,"top":0.24381484,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.73670214,"top":0.24581006,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mar-Apr 2026","depth":21,"bounds":{"left":0.74268615,"top":0.24381484,"width":0.028424202,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.82912236,"top":0.23822825,"width":0.005319149,"height":0.023942538},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.8294548,"top":0.24461293,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":21,"bounds":{"left":0.84640956,"top":0.2414206,"width":0.00731383,"height":0.017956903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Please enter","depth":19,"bounds":{"left":0.85771275,"top":0.23822825,"width":0.04454787,"height":0.023942538},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.60422206,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.60754657,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":18,"bounds":{"left":0.61818486,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.6215093,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.83543885,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.8387633,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.8494016,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.85272604,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.86336434,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.86668885,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"","depth":17,"bounds":{"left":0.87732714,"top":0.2717478,"width":0.011303191,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.8806516,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":" ","depth":17,"bounds":{"left":0.8912899,"top":0.2717478,"width":0.015292553,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.8942819,"top":0.27893057,"width":0.004654255,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":19,"bounds":{"left":0.90026593,"top":0.27972865,"width":0.0039893617,"height":0.009577015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Name","depth":23,"bounds":{"left":0.610871,"top":0.31524342,"width":0.010970744,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Size","depth":23,"bounds":{"left":0.7741024,"top":0.31524342,"width":0.007978723,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Type","depth":23,"bounds":{"left":0.81067157,"top":0.31524342,"width":0.008976064,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Modification date","depth":23,"bounds":{"left":0.8472407,"top":0.31524342,"width":0.032912236,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"","depth":20,"bounds":{"left":0.8992686,"top":0.31444532,"width":0.005319149,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8707305285100678032
|
5252778579038622671
|
click
|
accessibility
|
NULL
|
DXP4800PLUS-B5F8
5 Signs You Have Successfully Hur DXP4800PLUS-B5F8
5 Signs You Have Successfully Hurt a Narcissist; - [EMAIL] - Gmail
(56) Inbox | [EMAIL] | Proton Mail
Welcome back
Welcome back
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Western Digital Red Plus 3.5 6TB 5400rpm 256MB SATA3 (WD60EFPX) от 241,72 € (472,76 лв.) Вътрешен хард диск Western Digital - Pazaruvaj.com
Today's Deals
Today's Deals
architecture - screenpipe docs
architecture - screenpipe docs
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Claude Code works better when you stop treating it like a machine - [EMAIL] - Gmail
Screenpipe — Archive
Screenpipe — Archive
SQLite Web: archive.db
SQLite Web: archive.db
SQLite Web: db.sqlite
SQLite Web: db.sqlite
Claude Platform
Claude Platform
Hey @louis030195 Ill check during my - screenpipe.com
Hey @louis030195 Ill check during my - screenpipe.com
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
GitHub - screenpipe/screenpipe: Run agents that work for you based on what you do. AI finally knows what you are doing · GitHub
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
Gong Pricing in 2026: Costs, Plans & Is It Worth It?
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
GLM 5.1 Thinks Strategically, Data-Center Revolt Intensifies, When Helpful LLMs Turn Unhelpful, Humanoid Robots Get to Work - [EMAIL] - Gmail
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
930
B/s
132
B/s
Files
Control Panel
Storage
App Center
Logs
Support
Task Manager
Universal Search
Music
Cloud Drives
Theater
Photos
Online Office
TextEdit
Virtual Machine
Downloads
DLNA
File Version Explorer
Security
Jellyfin-HT
SAN Manager
Vault
Snapshot
Comics
Sync & Backup
Files
Personal Folder
Shared Folder
User Folder
Tag
Recycle Bin
Shared Folder
Documents
Фактури
Mar-Apr 2026
Shared Folder
Documents
Фактури
Mar-Apr 2026
Please enter
Name
Size
Type
Modification date
...
|
NULL
|
|
16332
|
361
|
13
|
2026-04-14T15:13:43.303606+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776179623303_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
10020013/25Dark Age- House Built----Lumber Camp Bu 10020013/25Dark Age- House Built----Lumber Camp Built---Villager Created-Create Villager (Cost: 50 g)Gathers resources. Builds and repairsbuildings. Also repairs Ships and SiegeWeapons.Upgrades: HP, armor, efficiency (TownCenter); wood resource-gathering (LumberCamp); stone, gold resource-gathering(Mining Camp); build speed (University);attack (Castle); more resistant to Monks(Monastery).92533905060(Hotkey: Q)Town Center0/157 3/5kovalfklukas (Britons))Creating 7%Villager2400/24006 Prithviraj Chauhan: 330/330 G4 Wen Tianxiang: 319/3195 Danylo Kobiakovych: 310/3107 Vikramaditya I: 306/3063 Mari Djata I: 297/297 €1 kovaliklukas: 293/2932 Yekuno Amlak: 290/2908 Ellac the Hun: 284/284...
|
NULL
|
-8706922572790622752
|
NULL
|
click
|
ocr
|
NULL
|
10020013/25Dark Age- House Built----Lumber Camp Bu 10020013/25Dark Age- House Built----Lumber Camp Built---Villager Created-Create Villager (Cost: 50 g)Gathers resources. Builds and repairsbuildings. Also repairs Ships and SiegeWeapons.Upgrades: HP, armor, efficiency (TownCenter); wood resource-gathering (LumberCamp); stone, gold resource-gathering(Mining Camp); build speed (University);attack (Castle); more resistant to Monks(Monastery).92533905060(Hotkey: Q)Town Center0/157 3/5kovalfklukas (Britons))Creating 7%Villager2400/24006 Prithviraj Chauhan: 330/330 G4 Wen Tianxiang: 319/3195 Danylo Kobiakovych: 310/3107 Vikramaditya I: 306/3063 Mari Djata I: 297/297 €1 kovaliklukas: 293/2932 Yekuno Amlak: 290/2908 Ellac the Hun: 284/284...
|
NULL
|
|
26192
|
558
|
0
|
2026-04-15T13:13:52.864270+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776258832864_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa(al]Sprint Review - 17 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,17 GB969,7 MB962,5 MB844,5 MB793,0 MB750,7 MB547,2 MB543,9 MB538,3 MB515,9 MB451,7 MB449,6 MB443,9 MB436,8 MB388,9 MB388,0 MB386,4 MB372,4 MB342,7 MB335,9 MB326,2 MB300,3 MB298,9 MB251,2 MB237,9 MB232,1 MB213,3 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:13:52CPUMemoryDiskThreads38227525862924273011162424252623262215211315286272825EnergyPorts59519 7567271231 20520 011131126253244165199122124123126120124119172328722161261 833125129124PID93892407801442974146648424203036713146738019938994186335480352763583143016368984365248173265481148509106051935833487856138482987429516,00 GB14,21 GB <1,74 GB2,94 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,85 GB2,88 GB6,92 GB...
|
NULL
|
-8706720037733217465
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa(al]Sprint Review - 17 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefox GPU HelperFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)Notion Helper (Renderer)claudeClaude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,17 GB969,7 MB962,5 MB844,5 MB793,0 MB750,7 MB547,2 MB543,9 MB538,3 MB515,9 MB451,7 MB449,6 MB443,9 MB436,8 MB388,9 MB388,0 MB386,4 MB372,4 MB342,7 MB335,9 MB326,2 MB300,3 MB298,9 MB251,2 MB237,9 MB232,1 MB213,3 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:13:52CPUMemoryDiskThreads38227525862924273011162424252623262215211315286272825EnergyPorts59519 7567271231 20520 011131126253244165199122124123126120124119172328722161261 833125129124PID93892407801442974146648424203036713146738019938994186335480352763583143016368984365248173265481148509106051935833487856138482987429516,00 GB14,21 GB <1,74 GB2,94 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,85 GB2,88 GB6,92 GB...
|
NULL
|
|
60562
|
1304
|
14
|
2026-04-20T15:46:45.995577+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776700005995_m1.jpg...
|
iTerm2
|
iTerm2
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplall100% (47 8 Mon 20 Apr 18:46:45ec2-user@ip-10-30-159-186:~181DOCKER₴1DEV (-zsh)₴82APP (-zsh)83screenpipe"0 84ec2-user@ip-10-30-159-186:~ (... 785-zsh|#21 /home/Jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\Queue\|SyncQueue->executeJob(Object(Jiminny\\Jobs\\Crm\\SyncTeamMetadata),86'crm-sync')#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminatel\Queue\|SyncQueue->pushCObject(Jiminny\\Jobs\\Crm\\SyncTeamMetadata),'crm-sync')#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\Bus|\Dispatcher->pushCommandToQueue(Object(Illuminate\\Queue\\SyncQueue),ObjectJiminny\\Jobs\\Crm\\SyncTeamMetadata))#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\Bus\\Dispatcher->dispatchToQueue(Object(Jiminny\\Jobs\\Crm\|SyncTeamMetadata))#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\Bus\\Dispatcher->dispatchSync(Object(Jiminny\\Jobs|\Crm\\SyncTeamMetadata), NULL#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(0bject(Jiminny\\Jobs\\Crm\|SyncTeamMetadata))#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\Console\\Commands\\Command->dispatch(Object(Jiminny\\Jobs\\Crm\\SyncTeamMetadata))patthobject(Jiminny|UJobs1ICrm|ISynCTeanMetadata))#28/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\Crm\\SyncTeamMetadata->handle()#29/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}O#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminatel\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminatel\Consolel\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminatel\Console\\OutputStyle))#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console((Output\\ConsoleOutput))#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\Console\\Commands\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\Crm\|SyncTeamMetadata), Object(Symfony\ \Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\ \Component\\Console\\Output\\ConsoleOutput))#40/home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input|(ArgvInput), Object(Symfony\\Component|\Console\\Output\\ConsoleOutput))#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input|(ArgvInput), Object(Symfony\\Component|\Console\\Output\\ConsoleOutput))#42 /home/jiminny/artisan(13): Illuminate\|Foundation\\Application->handleCommandCObject(Symfony\\Component\\Console\\Input\\ArgvInput))#43 {main}"3 {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}In Client.php line 573:The requested resource does not existroot@f33d5889f999:/home/jiminny#...
|
NULL
|
-8706402149579142695
|
NULL
|
idle
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplall100% (47 8 Mon 20 Apr 18:46:45ec2-user@ip-10-30-159-186:~181DOCKER₴1DEV (-zsh)₴82APP (-zsh)83screenpipe"0 84ec2-user@ip-10-30-159-186:~ (... 785-zsh|#21 /home/Jiminny/vendor/laravel/framework/src/Illuminate/Queue/SyncQueue.php(111): Illuminate\\Queue\|SyncQueue->executeJob(Object(Jiminny\\Jobs\\Crm\\SyncTeamMetadata),86'crm-sync')#22 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(246): Illuminatel\Queue\|SyncQueue->pushCObject(Jiminny\\Jobs\\Crm\\SyncTeamMetadata),'crm-sync')#23 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(230): Illuminate\\Bus|\Dispatcher->pushCommandToQueue(Object(Illuminate\\Queue\\SyncQueue),ObjectJiminny\\Jobs\\Crm\\SyncTeamMetadata))#24 /home/jiminny/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(98): Illuminate\\Bus\\Dispatcher->dispatchToQueue(Object(Jiminny\\Jobs\\Crm\|SyncTeamMetadata))#25 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php(477): Illuminate\\Bus\\Dispatcher->dispatchSync(Object(Jiminny\\Jobs|\Crm\\SyncTeamMetadata), NULL#26 /home/jiminny/app/Console/Commands/Command.php(102): dispatch_sync(0bject(Jiminny\\Jobs\\Crm\|SyncTeamMetadata))#27 /home/jiminny/app/Console/Commands/Crm/SyncTeamMetadata.php(50): Jiminny\\Console\\Commands\\Command->dispatch(Object(Jiminny\\Jobs\\Crm\\SyncTeamMetadata))patthobject(Jiminny|UJobs1ICrm|ISynCTeanMetadata))#28/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Jiminny\\Console\\Commands\\Crm\\SyncTeamMetadata->handle()#29/home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Util.php(43): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}O#30 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(96): Illuminate\\Container\\Util::unwrapIfClosure(Object(Closure))#31 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod(Object(Illuminate\\Foundation\\Application), Array, Object(Closure))#32 /home/jiminny/vendor/laravel/framework/src/Illuminate/Container/Container.php(799): Illuminatel\Container\\BoundMethod::call(Object(Illuminate\\Foundation\\Application), Array, Array, NULL)#33 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call(Array)#34 /home/jiminny/vendor/symfony/console/Command/Command.php(341): Illuminatel\Consolel\Command->execute(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminatel\Console\\OutputStyle))#35 /home/jiminny/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Illuminate\\Console\\OutputStyle))#36 /home/jiminny/app/Console/Commands/Command.php(41): Illuminate\\Console\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console((Output\\ConsoleOutput))#37 /home/jiminny/vendor/symfony/console/Application.php(1117): Jiminny\\Console\\Commands\\Command->run(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))#38 /home/jiminny/vendor/symfony/console/Application.php(356): Symfony\\Component\\Console\\Application->doRunCommand(Object(Jiminny\\Console\\Commands\\Crm\|SyncTeamMetadata), Object(Symfony\ \Component\\Console\\Input\\ArgvInput), Object(Symfony\\Component\\Console\\Output\\ConsoleOutput))#39 /home/jiminny/vendor/symfony/console/Application.php(195): Symfony\\Component\\Console\\Application->doRun(Object(Symfony\\Component\\Console\\Input\\ArgvInput), Object(Symfony\ \Component\\Console\\Output\\ConsoleOutput))#40/home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(198): Symfony\\Component\\Console\\Application->run(Object(Symfony\\Component\\Console\\Input|(ArgvInput), Object(Symfony\\Component|\Console\\Output\\ConsoleOutput))#41 /home/jiminny/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(1235): Illuminate\\Foundation\\Console\\Kernel->handle(Object(Symfony\\Component\\Console\\Input|(ArgvInput), Object(Symfony\\Component|\Console\\Output\\ConsoleOutput))#42 /home/jiminny/artisan(13): Illuminate\|Foundation\\Application->handleCommandCObject(Symfony\\Component\\Console\\Input\\ArgvInput))#43 {main}"3 {"correlation_id":"4e4bdda9-09ad-463b-9ff4-6aec798a1212", "trace_id":"443d09cf-4b07-4aa0-a0c8-1c319cb13da9"}In Client.php line 573:The requested resource does not existroot@f33d5889f999:/home/jiminny#...
|
NULL
|
|
27954
|
583
|
11
|
2026-04-15T14:02:51.601456+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776261771601_m2.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
8424116986221195585/185toImperial Age13--Warning: 8424116986221195585/185toImperial Age13--Warning: You are being attacked byPlayer 2 Rajyapala!!!---Elite Longbowman Created---Warning: You are being attacked byPlayer 5 Magnus Olafsson!!!-Right-click to garrison inside this ram.5 Magnus Olafsson: 28817/28817NV1 kovaliklukas: 24078/24078NV8 Almish Yiltawar: 22499/22499ON2 Rajyapala: 21868/21868NV6 (L 4sz16 I 12120/121287 Maximilian of Habobung: 6563/6562-1W4 Leuis VI: 6294/6294NV3 Huagcán: 6068/60691...
|
NULL
|
-8706103526100111095
|
NULL
|
click
|
ocr
|
NULL
|
8424116986221195585/185toImperial Age13--Warning: 8424116986221195585/185toImperial Age13--Warning: You are being attacked byPlayer 2 Rajyapala!!!---Elite Longbowman Created---Warning: You are being attacked byPlayer 5 Magnus Olafsson!!!-Right-click to garrison inside this ram.5 Magnus Olafsson: 28817/28817NV1 kovaliklukas: 24078/24078NV8 Almish Yiltawar: 22499/22499ON2 Rajyapala: 21868/21868NV6 (L 4sz16 I 12120/121287 Maximilian of Habobung: 6563/6562-1W4 Leuis VI: 6294/6294NV3 Huagcán: 6068/60691...
|
NULL
|
|
26478
|
560
|
62
|
2026-04-15T13:23:42.219570+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776259422219_m1.jpg...
|
Boosteroid
|
Boosteroid
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa• Sprint Review • 7 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaude Helper (Renderer)Notion Calendar Helper (Renderer)Notion Helper (Renderer)claudeFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,18 GB975,6 MB962,6 MB846,7 MB793,6 MB777,3 MB554,1 MB547,2 MB543,9 MB516,1 MB463,8 MB463,3 MB448,4 MB424,0 MB389,6 MB388,4 MB387,8 MB372,5 MB350,1 MB343,3 MB326,7 MB326,2 MB289,2 MB252,0 MB239,4 MB235,6 MB216,0 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:23:41CPUMemoryDiskThreads39227526852829252711152524262524262315152013286272725EnergyPorts61019 7527271261 20420 023129242128254165185123124125125121124121220172313721261 833124126124PID93892407801442974146648424203080193671314673938994186335480352763583143016368984365248173605192654811485091035833487856138482987429516,00 GB14,15 GB <1,81 GB2,93 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,88 GB2,90 GB6,82 GB...
|
NULL
|
-8705842647075453232
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeActivity..•More+HistoryW +SlackFileEditViewGoEDHomeActivity..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...sos+# general# infra-changes# jiminny-bg# platform-tickets# product _launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi…..Direct messagesStoyan TanevVesGalya DimitrovaAneliya Angelova, ...Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira CloudGoogle Cale...# releases8 22Messagesnewdou+@ Files• Bookmarksv 2 new messagesGitHub APP3:28 PM7 new commits pushed tomaster by nikolay-yankovNew24b989ee - Enhance SECFIXdocumentation and policiesa3a0a742 - Update SECFIX Slack channelreference in documentation and workflowfiles071c999d - Merge branch 'master' intoimprove-secfix-bot-15-04-2026981e9a1a - Update SECFIX_PROMPT.mdto enhance clarity on upgrade safety andchangelog reviews6e938e53 - Enhance SECFIX workflow withSlack notification optionsShow more( jiminny/app Added by GitHubCircleCl APP3:53 PMDeployment Successful!Project: appWhen:04/15/202612:53:30Tag:View JobMessage #releases+Aa• Sprint Review • 7 m leftRActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperVTDecoderXPCServiceSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentClaude Helper (Renderer)Notion Calendar Helper (Renderer)Notion Helper (Renderer)claudeFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentMem...2,03 GB1,18 GB975,6 MB962,6 MB846,7 MB793,6 MB777,3 MB554,1 MB547,2 MB543,9 MB516,1 MB463,8 MB463,3 MB448,4 MB424,0 MB389,6 MB388,4 MB387,8 MB372,5 MB350,1 MB343,3 MB326,7 MB326,2 MB289,2 MB252,0 MB239,4 MB235,6 MB216,0 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:100% C78Wed 15 Apr 16:23:41CPUMemoryDiskThreads39227526852829252711152524262524262315152013286272725EnergyPorts61019 7527271261 20420 023129242128254165185123124125125121124121220172313721261 833124126124PID93892407801442974146648424203080193671314673938994186335480352763583143016368984365248173605192654811485091035833487856138482987429516,00 GB14,15 GB <1,81 GB2,93 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,88 GB2,90 GB6,82 GB...
|
26477
|
|
57406
|
1234
|
93
|
2026-04-20T11:51:01.362383+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776685861362_m2.jpg...
|
Firefox
|
Firefox
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxcalVIewMistorJy 19798 evaluation for ai act FirefoxcalVIewMistorJy 19798 evaluation for ai activityJY-20553 | Improve crm-sync delaPipelines - jiminny/apeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated rep/Ask Jiminny Reports by nikolay-ya9 Jiminnvf fix(security): composer dependenc0) Pipelines - liminnylapral Feed - jiminny - Sentry# [UY-20692] Issue with reconnectin[UY-20692] Issue with reconne XJY-20692 change confirmation patuy-206921 Issue with reconnectin[SRD-6787] Issue with reconnectir≥ Jiminny MCP Connector - Product÷7 (Jy-206761 Notify the user if a Paif Project Phoenix - FigmaPipelines - jiminny/ape- New TabbookmarksProtlles1OOISWindowmelpinny.atlassian.net/browse/JY-20692?focusedCommentld=73537&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-73537O JIMINNYg For you© Recent# Starred8$ AppsQ Spaces÷...Jiminny (New)ull Plarorm leamil SE KanbanIID Capture TeamI Enterprise Stability I...Processing Team( Service-Desk= More spaces— FiltersH DashboardsC: Operations2 Confluence88 Teams"= Customise sidebarQ SearchSpaces / Jiminny (New) / & JY-11962 / *f JY-Exbected outcomeDevelopment JY-20692SubtasksBranches Commits Pull requests Builds Deployments Feature flags Other linksAdd subtask~ @ jiminny/app (GitHub)v Linked work IlemsAuthor ID* SRD-6787 Issue with reconnecting ZohoSummaryStatusH11886 Y-20692 change confirmation parameter|OPEN)JY-20692-fix-integration-app-token-auth-respo... → master~ ActivitycommentsHistory Work logNormaltext v B I ..HeyRecord a oom video Use video t‹CancelLukas KovalikHey @Georgi Bayraktarov The fix is alr...Georgi BayraktarovMorning team!As I still don't have an update for the customer, they're now asking if we can postpone their payment until they can gain access to the platform.I need to know if this will take longer so I can speak with Claire about a postponed payment.Thank you in advance!Georai RavraktarovC90NO100% C4& Mon 20 Apr 14:51:01Ask Rovo+ Create& Give feedback X* Improve BugReviewerUpdated00 +3 about 4 hours agoRegressionDaysNeed QACanny Links@ Lukas Kovalik@ Lukas Kovalik@ Open with VS Code1 branch1 commit1 pull request1 buildNoneAdd optionsNoneNonePlatformNone• JY-11962 Support ticketsPlatform Sprint 2 Q2= MediumNoNoneAdd optionOpen Canny Links> More fields Story point estimate, Original estimate, Time tracking> Automation 4 Rule executions3 days agoOPEN...
|
NULL
|
-8705722471091527407
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxcalVIewMistorJy 19798 evaluation for ai act FirefoxcalVIewMistorJy 19798 evaluation for ai activityJY-20553 | Improve crm-sync delaPipelines - jiminny/apeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated rep/Ask Jiminny Reports by nikolay-ya9 Jiminnvf fix(security): composer dependenc0) Pipelines - liminnylapral Feed - jiminny - Sentry# [UY-20692] Issue with reconnectin[UY-20692] Issue with reconne XJY-20692 change confirmation patuy-206921 Issue with reconnectin[SRD-6787] Issue with reconnectir≥ Jiminny MCP Connector - Product÷7 (Jy-206761 Notify the user if a Paif Project Phoenix - FigmaPipelines - jiminny/ape- New TabbookmarksProtlles1OOISWindowmelpinny.atlassian.net/browse/JY-20692?focusedCommentld=73537&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-73537O JIMINNYg For you© Recent# Starred8$ AppsQ Spaces÷...Jiminny (New)ull Plarorm leamil SE KanbanIID Capture TeamI Enterprise Stability I...Processing Team( Service-Desk= More spaces— FiltersH DashboardsC: Operations2 Confluence88 Teams"= Customise sidebarQ SearchSpaces / Jiminny (New) / & JY-11962 / *f JY-Exbected outcomeDevelopment JY-20692SubtasksBranches Commits Pull requests Builds Deployments Feature flags Other linksAdd subtask~ @ jiminny/app (GitHub)v Linked work IlemsAuthor ID* SRD-6787 Issue with reconnecting ZohoSummaryStatusH11886 Y-20692 change confirmation parameter|OPEN)JY-20692-fix-integration-app-token-auth-respo... → master~ ActivitycommentsHistory Work logNormaltext v B I ..HeyRecord a oom video Use video t‹CancelLukas KovalikHey @Georgi Bayraktarov The fix is alr...Georgi BayraktarovMorning team!As I still don't have an update for the customer, they're now asking if we can postpone their payment until they can gain access to the platform.I need to know if this will take longer so I can speak with Claire about a postponed payment.Thank you in advance!Georai RavraktarovC90NO100% C4& Mon 20 Apr 14:51:01Ask Rovo+ Create& Give feedback X* Improve BugReviewerUpdated00 +3 about 4 hours agoRegressionDaysNeed QACanny Links@ Lukas Kovalik@ Lukas Kovalik@ Open with VS Code1 branch1 commit1 pull request1 buildNoneAdd optionsNoneNonePlatformNone• JY-11962 Support ticketsPlatform Sprint 2 Q2= MediumNoNoneAdd optionOpen Canny Links> More fields Story point estimate, Original estimate, Time tracking> Automation 4 Rule executions3 days agoOPEN...
|
57404
|
|
432
|
NULL
|
0
|
2026-04-09T17:55:22.268711+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-09/1775 /Users/lukas/.screenpipe/data/data/2026-04-09/1775757322268_m1.jpg...
|
Claude
|
Claude
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Close sidebar
Back
Forward
Chat
Cowork
Code
New ch Close sidebar
Back
Forward
Chat
Cowork
Code
New chat
New chat
⇧⌘O
Search
Search
⌘K
Customize
Customize
Chats
Chats
Projects
Projects
Artifacts
Artifacts
Starred
Starred
Bulgarian citizenship application process for EU residents
Bulgarian citizenship application process for EU residents
Dawarich location tracking project
Dawarich location tracking project
Recents Hide
Recents
Hide
Running screenpipe for free
Running screenpipe for free
Mac Studio network switch setup
Mac Studio network switch setup
Claude extension in Vivaldi browser
Claude extension in Vivaldi browser
General information request
General information request
Red dots on neck causes
Red dots on neck causes
Change approval
Change approval
Querying Screenpipe with Claude AI
Querying Screenpipe with Claude AI
Setting up daily backups in Ugreen NAS
Setting up daily backups in Ugreen NAS
Upcoming reminders
Upcoming reminders
Accessing tools in Open WebUI
Accessing tools in Open WebUI
Laravel issue troubleshooting
Laravel issue troubleshooting
Reminder to take rodný list
Reminder to take rodný list
Setting up reminders in Open WebUI
Setting up reminders in Open WebUI
NAS reverse proxy access issues after UGOS update
NAS reverse proxy access issues after UGOS update
Reminders summary and management
Reminders summary and management
Self-hosted screen recording and activity tracking
Self-hosted screen recording and activity tracking
Reminders connector not syncing to iOS
Reminders connector not syncing to iOS
Setting up Gemma model in Open WebUI
Setting up Gemma model in Open WebUI
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
Next task inquiry
Next task inquiry
Last visit to Lovech
Last visit to Lovech
💬 I want to figure out auth on m…
💬 I want to figure out auth on m…
Git push and SSH authentication errors with Gitea
Git push and SSH authentication errors with Gitea
DIA browser RAM configuration
DIA browser RAM configuration
Claude Pro usage limits and promotion changes
Claude Pro usage limits and promotion changes
Running Gemma 4 on NAS
Running Gemma 4 on NAS
All chats
All chats
Lukas Kovalik, Settings
LK
Lukas Kovalik
Pro plan
Get apps and extensions
Evening, Lukas
what do I need to query screenpipe
what do I need to query screenpipe
Add files, connectors, and more
Sonnet 4.6
Sonnet 4.6
Send message...
|
[{"role":"AXCheckBox","text [{"role":"AXCheckBox","text":"Close sidebar","depth":11,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Back","depth":11,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward","depth":11,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Chat","depth":12,"role_description":"radio button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Cowork","depth":12,"role_description":"radio button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Code","depth":12,"role_description":"radio button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"New chat","depth":16,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"New chat","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"⇧⌘O","depth":17,"role_description":"text"},{"role":"AXLink","text":"Search","depth":16,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Search","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"⌘K","depth":17,"role_description":"text"},{"role":"AXLink","text":"Customize","depth":16,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Customize","depth":18,"role_description":"text"},{"role":"AXLink","text":"Chats","depth":17,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Chats","depth":19,"role_description":"text"},{"role":"AXLink","text":"Projects","depth":17,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Projects","depth":19,"role_description":"text"},{"role":"AXLink","text":"Artifacts","depth":17,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Artifacts","depth":18,"role_description":"text"},{"role":"AXHeading","text":"Starred","depth":18,"role_description":"heading"},{"role":"AXStaticText","text":"Starred","depth":19,"role_description":"text"},{"role":"AXLink","text":"Bulgarian citizenship application process for EU residents","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Bulgarian citizenship application process for EU residents","depth":22,"role_description":"text"},{"role":"AXLink","text":"Dawarich location tracking project","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dawarich location tracking project","depth":22,"role_description":"text"},{"role":"AXButton","text":"Recents Hide","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Recents","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"Hide","depth":19,"role_description":"text"},{"role":"AXLink","text":"Running screenpipe for free","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Running screenpipe for free","depth":22,"role_description":"text"},{"role":"AXLink","text":"Mac Studio network switch setup","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Mac Studio network switch setup","depth":22,"role_description":"text"},{"role":"AXLink","text":"Claude extension in Vivaldi browser","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude extension in Vivaldi browser","depth":22,"role_description":"text"},{"role":"AXLink","text":"General information request","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"General information request","depth":22,"role_description":"text"},{"role":"AXLink","text":"Red dots on neck causes","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Red dots on neck causes","depth":22,"role_description":"text"},{"role":"AXLink","text":"Change approval","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change approval","depth":22,"role_description":"text"},{"role":"AXLink","text":"Querying Screenpipe with Claude AI","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Querying Screenpipe with Claude AI","depth":22,"role_description":"text"},{"role":"AXLink","text":"Setting up daily backups in Ugreen NAS","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Setting up daily backups in Ugreen NAS","depth":22,"role_description":"text"},{"role":"AXLink","text":"Upcoming reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Upcoming reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"Accessing tools in Open WebUI","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Accessing tools in Open WebUI","depth":22,"role_description":"text"},{"role":"AXLink","text":"Laravel issue troubleshooting","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Laravel issue troubleshooting","depth":22,"role_description":"text"},{"role":"AXLink","text":"Reminder to take rodný list","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Reminder to take rodný list","depth":22,"role_description":"text"},{"role":"AXLink","text":"Setting up reminders in Open WebUI","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Setting up reminders in Open WebUI","depth":22,"role_description":"text"},{"role":"AXLink","text":"NAS reverse proxy access issues after UGOS update","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"NAS reverse proxy access issues after UGOS update","depth":22,"role_description":"text"},{"role":"AXLink","text":"Reminders summary and management","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Reminders summary and management","depth":22,"role_description":"text"},{"role":"AXLink","text":"Self-hosted screen recording and activity tracking","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Self-hosted screen recording and activity tracking","depth":22,"role_description":"text"},{"role":"AXLink","text":"Reminders connector not syncing to iOS","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Reminders connector not syncing to iOS","depth":22,"role_description":"text"},{"role":"AXLink","text":"Setting up Gemma model in Open WebUI","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Setting up Gemma model in Open WebUI","depth":22,"role_description":"text"},{"role":"AXLink","text":"List my reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"List my reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"List my reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"List my reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"List my reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"List my reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"List my reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"List my reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"List my reminders","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"List my reminders","depth":22,"role_description":"text"},{"role":"AXLink","text":"Next task inquiry","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Next task inquiry","depth":22,"role_description":"text"},{"role":"AXLink","text":"Last visit to Lovech","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last visit to Lovech","depth":22,"role_description":"text"},{"role":"AXLink","text":"💬 I want to figure out auth on m…","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"💬 I want to figure out auth on m…","depth":22,"role_description":"text"},{"role":"AXLink","text":"Git push and SSH authentication errors with Gitea","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Git push and SSH authentication errors with Gitea","depth":22,"role_description":"text"},{"role":"AXLink","text":"DIA browser RAM configuration","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DIA browser RAM configuration","depth":22,"role_description":"text"},{"role":"AXLink","text":"Claude Pro usage limits and promotion changes","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Claude Pro usage limits and promotion changes","depth":22,"role_description":"text"},{"role":"AXLink","text":"Running Gemma 4 on NAS","depth":21,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Running Gemma 4 on NAS","depth":22,"role_description":"text"},{"role":"AXLink","text":"All chats","depth":19,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"All chats","depth":20,"role_description":"text"},{"role":"AXPopUpButton","text":"Lukas Kovalik, Settings","depth":16,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"LK","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Pro plan","depth":17,"role_description":"text"},{"role":"AXButton","text":"Get apps and extensions","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Evening, Lukas","depth":14,"role_description":"text"},{"role":"AXTextArea","text":"what do I need to query screenpipe","depth":18,"value":"what do I need to query screenpipe","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"what do I need to query screenpipe","depth":20,"role_description":"text"},{"role":"AXPopUpButton","text":"Add files, connectors, and more","depth":20,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Sonnet 4.6","depth":19,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sonnet 4.6","depth":21,"role_description":"text"},{"role":"AXButton","text":"Send message","depth":19,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8705127680120314067
|
7320374765974455586
|
click
|
accessibility
|
NULL
|
Close sidebar
Back
Forward
Chat
Cowork
Code
New ch Close sidebar
Back
Forward
Chat
Cowork
Code
New chat
New chat
⇧⌘O
Search
Search
⌘K
Customize
Customize
Chats
Chats
Projects
Projects
Artifacts
Artifacts
Starred
Starred
Bulgarian citizenship application process for EU residents
Bulgarian citizenship application process for EU residents
Dawarich location tracking project
Dawarich location tracking project
Recents Hide
Recents
Hide
Running screenpipe for free
Running screenpipe for free
Mac Studio network switch setup
Mac Studio network switch setup
Claude extension in Vivaldi browser
Claude extension in Vivaldi browser
General information request
General information request
Red dots on neck causes
Red dots on neck causes
Change approval
Change approval
Querying Screenpipe with Claude AI
Querying Screenpipe with Claude AI
Setting up daily backups in Ugreen NAS
Setting up daily backups in Ugreen NAS
Upcoming reminders
Upcoming reminders
Accessing tools in Open WebUI
Accessing tools in Open WebUI
Laravel issue troubleshooting
Laravel issue troubleshooting
Reminder to take rodný list
Reminder to take rodný list
Setting up reminders in Open WebUI
Setting up reminders in Open WebUI
NAS reverse proxy access issues after UGOS update
NAS reverse proxy access issues after UGOS update
Reminders summary and management
Reminders summary and management
Self-hosted screen recording and activity tracking
Self-hosted screen recording and activity tracking
Reminders connector not syncing to iOS
Reminders connector not syncing to iOS
Setting up Gemma model in Open WebUI
Setting up Gemma model in Open WebUI
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
List my reminders
Next task inquiry
Next task inquiry
Last visit to Lovech
Last visit to Lovech
💬 I want to figure out auth on m…
💬 I want to figure out auth on m…
Git push and SSH authentication errors with Gitea
Git push and SSH authentication errors with Gitea
DIA browser RAM configuration
DIA browser RAM configuration
Claude Pro usage limits and promotion changes
Claude Pro usage limits and promotion changes
Running Gemma 4 on NAS
Running Gemma 4 on NAS
All chats
All chats
Lukas Kovalik, Settings
LK
Lukas Kovalik
Pro plan
Get apps and extensions
Evening, Lukas
what do I need to query screenpipe
what do I need to query screenpipe
Add files, connectors, and more
Sonnet 4.6
Sonnet 4.6
Send message...
|
NULL
|
|
46062
|
974
|
26
|
2026-04-17T10:18:46.727387+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776421126727_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v99 JY-20692-fix-integration-app-[API_KEY] v© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.phpC ReportController.phpTokenBuilder.phpC TeamSetupController.phpphp api.php• Filesystem.php© Team.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php© RequestGenerateReportJob.phpOpportunitySyncTrait.phpC Opportunity.phpT InteractsWithPivotTable.phgC OpportunityUpdated.phpC OpportunityStageUpdated.php= custom.log= laravel.logValidationOVov D Repositoryv D OnDemandActivitySt© Criteria.php© TranscriptionKeywor> D TeamSettingspnp nelpers.ongInitialFrontendState.php©Jiminny.php©Plan.php© Serializer.php© TeamScimDetails.phpbootstrapD buildO config[M contrib> M database> M docsv _ front-end> O.vscode> D.yarn› D coverage› D node_modules› D publicO resourcesscriptssrcD_mocks_DJappsD assets_ components> D AiReportsv O connect> D_mocks_> D_tests_0 connect.lessV connect.vuecashboardDeallnsichts> MerrorPagesexoon-oonalextension-installedD Invitation• JoinConferencelayout• LiveCoach• LockedD loginMeetingConsentmobileMonboard> M mocks_› testsV MobileAppDownk0 Onboard.lessV Onboard.vuets useProvidersSync> D ondemand< Hs local liminnyalocalnostA SF [jiminny@localhost]CP scratch_1.json4 console [EUl© CrmEntityRepository.phpA console [PROD]A console [STAGING]<script>methods: (async integrationAppOnCLickO) €c) FventService?rovider.onn© OpportunityPendingAiAnalysisAfterStageChanged.php© RunOpportunityAiAnalysis.php© ProcessAiAutomationAnalysisResults.php( ImportBatchJobTrait.php(C) Service.phpCcW© ImportOpportunityBatch.php150151console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));10181028102910301033103410351048104910501051105210/01J0/1107710781079108010931074111511331134115011/141/0// [IntegrationApp] openNewConnection resolved: {cachedStagestrait OpportunitySyncTraitA33 X2 X19private function resolveForecastCategory(?string $forecastCategory): stringf...156"id" : "69e0b41a67d0068c2ca0b48e","name": "Zoho CRM",1155"userId": "1ece66c8-feb1-4df1-b321-21607daf4623","tenantId": "69e0b3faef3e7b6248189289","isTest": false,2 usages=158"connecced. urue,private function importExternalFieldData(array $properties, int $opportunityId159"state": "READY"160"errors" : [],ecrurtelas - eenis->gecupporcunttysyncab Lertetaste161"integrationId":"66fe6c913202f3a165e3c14d",$this->importOpportunityCrmFieldData($properties, $crmFields,$opportunityl162"externalAppId" : "6671653e7e2d642e4e41b0fa",=163"authOptionKey" :""164"createdAt": "2026-04-16T10:04:10.420Z",Lusaees—165"updatedAt": "2026-04-16T10:04:10.575Z",private function import0pportunityContacts(Opportunity $opportunity, array $as: 166-167"retryAttempts" :0,"isDeactivated" : false/**=168* Sync opportunity contacts using differential approach* This compares current vs new associations and only makes necessary changesif (connection && (connection?.disconnected === false || connection?.connec Accept trugedt 1conneccion xx connection,connected s== true)<i// 1f (connection da connection. disconnectedee falset1 usageprivate tunecion syncupporcunttycontactsuurterentlatcopportundty sopportunatyt 170if (connection && connection?.disconnected !== true && connection?.connected !== false) ktry1private funotion getcurnentContactcrntds COpportunaty Soppontunity) : arrayk.. 173const saveRequest = await axios.nost("/api/v1/integration-app-connect"1 usageprivate function logContactAssociationChanges(Opportunity Sopportunity,array $currentContactCrmIds,array $contactAssociations,array $contactsToAdd,array +concacustokemove): void {...}11/4175176177178179180181182if (saveRequest.data && saveRequest.data,success F== true) {/** If all is good refresh the page here */window.location = "/dashboard";eLurtln1 usagethroy newcrror.savere.vest.data.nessaden.} catch (error) 1consore, loo error.showSnackbarError(normalizeError(error));1184private function removeContactAssociations(Opportunity Sopportunity, array $cOl 185100Tusaue1 usage187private function addContactAssociations(Opportunity Sopportunity, array $conta( 188189190private tunction attachsing Lecontacttopportunity popportunity, scring sermia9n-192</script><style module Lang="less" src="•/connect.less"></style>orivate Tunccion pertormconcactActachnent upporcunity sopportunlty concact scu1 usageprivate function logAddedContacts(Opportunity $opportunity, array $contactsAdde1 edit Jv Accept File &+X Reject File 1 % @+ 1 of 2 files →shortcuts contlicts: Clone Caret Above and l more shortcut contlict with macos shortcuts. Modiry these snortcuts or change macos system settings. # Modily shortcuts #/ Don't show Again (56 minutesloblSupport Daily - in 1h 42 mA1E AutomatedRenortsCommandTest100% C•Fri 17 Apr 13:18:46connect.vueV Onboapiivue XCascadefi crm_configurations (EU]/lminnviapo/tront-eno/src/comoonents/onboarc/onboarc.vuertunitUpdate Connection Lo+D ..aonboard,vuerl51e whatit connection.c sconnected is not setrThat's already handled correctly. If connection.disconnected is not set, connection.disconnected == true evalualesto Talse, sol wont olock—tne chaln oniy dlocks i one or tne conaltions is expllcitlyTuelalse, "ne "netnertel. ser case als nroven winour ertorw2 files +2 -5›Ask anything (24L)+ <> Code Claude Sonnet 4.6Reject allAccept allW Winasunt leams1/0:llo charsulr-of 2 spaces...
|
NULL
|
-8704722440965004223
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v99 JY-20692-fix-integration-app-[API_KEY] v© AutomatedReportsService.php© SendReportJob.php© SendReportMailJob.phpC ReportController.phpTokenBuilder.phpC TeamSetupController.phpphp api.php• Filesystem.php© Team.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php© RequestGenerateReportJob.phpOpportunitySyncTrait.phpC Opportunity.phpT InteractsWithPivotTable.phgC OpportunityUpdated.phpC OpportunityStageUpdated.php= custom.log= laravel.logValidationOVov D Repositoryv D OnDemandActivitySt© Criteria.php© TranscriptionKeywor> D TeamSettingspnp nelpers.ongInitialFrontendState.php©Jiminny.php©Plan.php© Serializer.php© TeamScimDetails.phpbootstrapD buildO config[M contrib> M database> M docsv _ front-end> O.vscode> D.yarn› D coverage› D node_modules› D publicO resourcesscriptssrcD_mocks_DJappsD assets_ components> D AiReportsv O connect> D_mocks_> D_tests_0 connect.lessV connect.vuecashboardDeallnsichts> MerrorPagesexoon-oonalextension-installedD Invitation• JoinConferencelayout• LiveCoach• LockedD loginMeetingConsentmobileMonboard> M mocks_› testsV MobileAppDownk0 Onboard.lessV Onboard.vuets useProvidersSync> D ondemand< Hs local liminnyalocalnostA SF [jiminny@localhost]CP scratch_1.json4 console [EUl© CrmEntityRepository.phpA console [PROD]A console [STAGING]<script>methods: (async integrationAppOnCLickO) €c) FventService?rovider.onn© OpportunityPendingAiAnalysisAfterStageChanged.php© RunOpportunityAiAnalysis.php© ProcessAiAutomationAnalysisResults.php( ImportBatchJobTrait.php(C) Service.phpCcW© ImportOpportunityBatch.php150151console.log('[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));10181028102910301033103410351048104910501051105210/01J0/1107710781079108010931074111511331134115011/141/0// [IntegrationApp] openNewConnection resolved: {cachedStagestrait OpportunitySyncTraitA33 X2 X19private function resolveForecastCategory(?string $forecastCategory): stringf...156"id" : "69e0b41a67d0068c2ca0b48e","name": "Zoho CRM",1155"userId": "1ece66c8-feb1-4df1-b321-21607daf4623","tenantId": "69e0b3faef3e7b6248189289","isTest": false,2 usages=158"connecced. urue,private function importExternalFieldData(array $properties, int $opportunityId159"state": "READY"160"errors" : [],ecrurtelas - eenis->gecupporcunttysyncab Lertetaste161"integrationId":"66fe6c913202f3a165e3c14d",$this->importOpportunityCrmFieldData($properties, $crmFields,$opportunityl162"externalAppId" : "6671653e7e2d642e4e41b0fa",=163"authOptionKey" :""164"createdAt": "2026-04-16T10:04:10.420Z",Lusaees—165"updatedAt": "2026-04-16T10:04:10.575Z",private function import0pportunityContacts(Opportunity $opportunity, array $as: 166-167"retryAttempts" :0,"isDeactivated" : false/**=168* Sync opportunity contacts using differential approach* This compares current vs new associations and only makes necessary changesif (connection && (connection?.disconnected === false || connection?.connec Accept trugedt 1conneccion xx connection,connected s== true)<i// 1f (connection da connection. disconnectedee falset1 usageprivate tunecion syncupporcunttycontactsuurterentlatcopportundty sopportunatyt 170if (connection && connection?.disconnected !== true && connection?.connected !== false) ktry1private funotion getcurnentContactcrntds COpportunaty Soppontunity) : arrayk.. 173const saveRequest = await axios.nost("/api/v1/integration-app-connect"1 usageprivate function logContactAssociationChanges(Opportunity Sopportunity,array $currentContactCrmIds,array $contactAssociations,array $contactsToAdd,array +concacustokemove): void {...}11/4175176177178179180181182if (saveRequest.data && saveRequest.data,success F== true) {/** If all is good refresh the page here */window.location = "/dashboard";eLurtln1 usagethroy newcrror.savere.vest.data.nessaden.} catch (error) 1consore, loo error.showSnackbarError(normalizeError(error));1184private function removeContactAssociations(Opportunity Sopportunity, array $cOl 185100Tusaue1 usage187private function addContactAssociations(Opportunity Sopportunity, array $conta( 188189190private tunction attachsing Lecontacttopportunity popportunity, scring sermia9n-192</script><style module Lang="less" src="•/connect.less"></style>orivate Tunccion pertormconcactActachnent upporcunity sopportunlty concact scu1 usageprivate function logAddedContacts(Opportunity $opportunity, array $contactsAdde1 edit Jv Accept File &+X Reject File 1 % @+ 1 of 2 files →shortcuts contlicts: Clone Caret Above and l more shortcut contlict with macos shortcuts. Modiry these snortcuts or change macos system settings. # Modily shortcuts #/ Don't show Again (56 minutesloblSupport Daily - in 1h 42 mA1E AutomatedRenortsCommandTest100% C•Fri 17 Apr 13:18:46connect.vueV Onboapiivue XCascadefi crm_configurations (EU]/lminnviapo/tront-eno/src/comoonents/onboarc/onboarc.vuertunitUpdate Connection Lo+D ..aonboard,vuerl51e whatit connection.c sconnected is not setrThat's already handled correctly. If connection.disconnected is not set, connection.disconnected == true evalualesto Talse, sol wont olock—tne chaln oniy dlocks i one or tne conaltions is expllcitlyTuelalse, "ne "netnertel. ser case als nroven winour ertorw2 files +2 -5›Ask anything (24L)+ <> Code Claude Sonnet 4.6Reject allAccept allW Winasunt leams1/0:llo charsulr-of 2 spaces...
|
NULL
|