|
34518
|
NULL
|
0
|
2026-04-16T08:47:24.411234+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776329244411_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRetactonToo PhpStormFileFditViewNavigateCodelaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject vC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php Xphp api.php(©) SendReportJob.php= custom.log= laravel.loge SF (iminny@localhostc HS_local fiminny@localhost¿ console (EU]Yc) PlavlistController.nhi© Pushercontroller.php(C SlackController.pnp(C) SupportController.prc leamserupcontrolle(C) UserAutomatedRepc(©) WelcomeController.r>_ MiddlewareRequests>D Resources>_Responses> MSerializers> M TransformersC Kernel.phpT) PlavlistTrackResourceTT ValidateCrmConnection› _ Integrations› _ Interactionsv → Jobs>D Activity→ AlAutomationD AjReports> D Audio~ [ AutomatedReports(e) RequestGenerareas›(C) recuestcenerterelsелакероплов.pпp(©) SendReportMailJob.lCalendarD CrmDealRisks_ Mailbox→ MeetingBotMid dlleware> 07 Streaming> MTeam> M Telephonv>MUserC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php4 console [PROD1L console [STAGING] X© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.phpIX. AUlo vHaycround vMa lminny vC AutomatedReportsService.phpC CreateHeldActivityEvent.phpC) TrackProviderInstalledEvent.php018 416 ×13 ^C CreateActivityLoggedEvent.php© UserPilotActivityListener.phpActivityLoagea.onpFRUM playdooks pJoin playbook_cacegories pc1<->1..n: on p.id = pc.plavbook idwnere orrealio = ano p.acmury tvoe ='event.)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpC AutomatedReportResult.php(C AutomatedReport.php548549SELECT * FROM crm_fields WHERE crm confiquration id = 1 and object type = 'event":class TeamSetupController extends Controllerpublic function integrationAppConnectO: JsonResponse44X2 ^550551SELECT * FROM crm field values WHERE crm_ field id = 4:select * from crm_layouts cl Join playbook_layouts pul<->l.n: on cl.ld = pl.layout_1dreturn response)->json([success= false,"nessade"someching went wrong. soclal account is cannot be round..where crm_configurat1on_1d = 1 and pl.playbook_1d = 175556select * rrom teams:Euee** -rur autonared redorts-›sersraruscode code•Jsonkesponse:.HIIP_FALLEU_DEPENDENCY):$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED):SsocialAccount->saveO:Joln teams t on r.ueam 1a = t.10WHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r. expiresat >= now oR r.expires.at Is NULD):212214sthis->logger→>info('[IntegrationApp] Social account is connected.', L'team_1d => Steam->getid),'lapp_provider' => srealProviderKey,'provider'= $crmproviderKey.l'state' => SocialAccount::STATE_CONNECTED,1):Sthis->eventDispatcher->dispatchtnew SocialAccountConnected($socialAccount)):560561563565566567568 v569— 5/1572573- 574select * from automated_report_results where neportond IN (18, 35);select * from activity_searches where 1d = 10932*select * trom acuvity_search_tiluers where aculvity_searcn_1d = 10752;select * trom aucomaced_reports order dy za desciselect * trom aucomaced_report_resulus order by za desc,select x TroIautomated_report_results where report id IN (37);select * from users where id IN (7160. 32480:SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = wuid;return responseo->1son (l'success = true.'message' => sprintflformat: "s 1s successfully connected',Providers::getintegratzonAppProv1derLabel(srealProviderKey)Local changesShelfConcoleLog XChanges 8 files= .env.local appActivityController.php app/Http/Controllers/API© JiminnyDebugCommand.php app/Console/Commandspip logging.pnp contigC) PlaybackService.php app/services(C) ReportController.php app/Http/Controllers/Webhook(C SyncTolntercom.php app/Jobs/Teampip web.one roules›Unversioned Files 8 filesSide-by-side viewerDo not ignoreHighlight words* 15@a0a9685c app/Jobs/Team/SyncTolntercom.phg\Jiminny \Jobs\Team > SyncTolntercomIntercomService SintercomService,ActivityProv1derReg1stry sactivityProv1derReg1stry.TeamRepos1tory steamRepos1tory,: VOld&steam = schis->ceam;// we don't want to sync parcher accounts to Incercom.if ($team->isPartnerDefault( === false) (recurnrcurrent version(Jiminny \Jobs\Team > SyncTolntercom vIntercomService SintercomService.ActivityProviderregistry sactivityProviderRegistry,TeamRepository steamRepository,): void {return;pteam = schis->ceam;// We don't want to sync partner accounts to Intercom.if (Steam->isPartnerDefaultO === false) «return,$crm = Steam->getCrmConfiqurationO:Create remote IntercomcolllpallysintercomService->createCompany(l"name= steam->getName)"company_1d'= $team->getUuid().'size' => $team->seats,"renore created at'= Steam->geccreacedAt()->geclimestamp),$crm = Steam->getCrmConfigurationO:stler = steam->getliero:stlerlltle = stier?->getlitle ?? 'Unknown';// Create remote Intercom company.# Try sonargube cloud for tree / Download sonargube server |/ Learn more // Don't ask again (14 minutes ago)a Support Daily • in 3 h 13 mA]100% 145Thu 16 Apr 11:47:24U AutomatedReportsCommandTest-CascadeIntegration App Conneconnection.disconnected // boolean - false = OAuth completed, tStep 4 - Only if connection.disconnected === false, the backend is called" javascrip'if (connection && connection.disconnected === false) {awalt axlos.post aolvlincecracion-app-connectrStep 5 - Backend integrationAppConnect marks the SocialAccount asconnecredTeanSetuncontroller.0hn:24%-718• php$socialAccount->setAttribute('state', SocialAccount:: STATE_CONNE"soclalAccount→ssavesthas->eventDispatcher->oispatchlnew SocialAccountconnectedssocIt does not call Integration App's APl to verity. It just trusts the frontend.summary — wnat Neeas to be Presenttor the whole ining toWorkWnarWnereMust maveValid JWT tokenSocialAccount.provider user tokenTeam UUlD as id, signedwith correct secret. notProvider nameCRM configuration → RouteProviderl istMust match Integration Appintegration key exactlysocla lAccountrecordDB, provider = "inteCreated during integrationAnnlloken calllPromise resolves disconnected: falseIntegration App SDKUser must complete OAuthin the modaAsk anything (2+L)+ @ CodeClaude Sonnet 4.64 anlerencesWWinasun leams214:45uir-oia 4 spaces...
|
NULL
|
9110072353737037879
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaravelRetactonToo PhpStormFileFditViewNavigateCodelaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject vC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php Xphp api.php(©) SendReportJob.php= custom.log= laravel.loge SF (iminny@localhostc HS_local fiminny@localhost¿ console (EU]Yc) PlavlistController.nhi© Pushercontroller.php(C SlackController.pnp(C) SupportController.prc leamserupcontrolle(C) UserAutomatedRepc(©) WelcomeController.r>_ MiddlewareRequests>D Resources>_Responses> MSerializers> M TransformersC Kernel.phpT) PlavlistTrackResourceTT ValidateCrmConnection› _ Integrations› _ Interactionsv → Jobs>D Activity→ AlAutomationD AjReports> D Audio~ [ AutomatedReports(e) RequestGenerareas›(C) recuestcenerterelsелакероплов.pпp(©) SendReportMailJob.lCalendarD CrmDealRisks_ Mailbox→ MeetingBotMid dlleware> 07 Streaming> MTeam> M Telephonv>MUserC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php4 console [PROD1L console [STAGING] X© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.phpIX. AUlo vHaycround vMa lminny vC AutomatedReportsService.phpC CreateHeldActivityEvent.phpC) TrackProviderInstalledEvent.php018 416 ×13 ^C CreateActivityLoggedEvent.php© UserPilotActivityListener.phpActivityLoagea.onpFRUM playdooks pJoin playbook_cacegories pc1<->1..n: on p.id = pc.plavbook idwnere orrealio = ano p.acmury tvoe ='event.)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpC AutomatedReportResult.php(C AutomatedReport.php548549SELECT * FROM crm_fields WHERE crm confiquration id = 1 and object type = 'event":class TeamSetupController extends Controllerpublic function integrationAppConnectO: JsonResponse44X2 ^550551SELECT * FROM crm field values WHERE crm_ field id = 4:select * from crm_layouts cl Join playbook_layouts pul<->l.n: on cl.ld = pl.layout_1dreturn response)->json([success= false,"nessade"someching went wrong. soclal account is cannot be round..where crm_configurat1on_1d = 1 and pl.playbook_1d = 175556select * rrom teams:Euee** -rur autonared redorts-›sersraruscode code•Jsonkesponse:.HIIP_FALLEU_DEPENDENCY):$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED):SsocialAccount->saveO:Joln teams t on r.ueam 1a = t.10WHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r. expiresat >= now oR r.expires.at Is NULD):212214sthis->logger→>info('[IntegrationApp] Social account is connected.', L'team_1d => Steam->getid),'lapp_provider' => srealProviderKey,'provider'= $crmproviderKey.l'state' => SocialAccount::STATE_CONNECTED,1):Sthis->eventDispatcher->dispatchtnew SocialAccountConnected($socialAccount)):560561563565566567568 v569— 5/1572573- 574select * from automated_report_results where neportond IN (18, 35);select * from activity_searches where 1d = 10932*select * trom acuvity_search_tiluers where aculvity_searcn_1d = 10752;select * trom aucomaced_reports order dy za desciselect * trom aucomaced_report_resulus order by za desc,select x TroIautomated_report_results where report id IN (37);select * from users where id IN (7160. 32480:SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = wuid;return responseo->1son (l'success = true.'message' => sprintflformat: "s 1s successfully connected',Providers::getintegratzonAppProv1derLabel(srealProviderKey)Local changesShelfConcoleLog XChanges 8 files= .env.local appActivityController.php app/Http/Controllers/API© JiminnyDebugCommand.php app/Console/Commandspip logging.pnp contigC) PlaybackService.php app/services(C) ReportController.php app/Http/Controllers/Webhook(C SyncTolntercom.php app/Jobs/Teampip web.one roules›Unversioned Files 8 filesSide-by-side viewerDo not ignoreHighlight words* 15@a0a9685c app/Jobs/Team/SyncTolntercom.phg\Jiminny \Jobs\Team > SyncTolntercomIntercomService SintercomService,ActivityProv1derReg1stry sactivityProv1derReg1stry.TeamRepos1tory steamRepos1tory,: VOld&steam = schis->ceam;// we don't want to sync parcher accounts to Incercom.if ($team->isPartnerDefault( === false) (recurnrcurrent version(Jiminny \Jobs\Team > SyncTolntercom vIntercomService SintercomService.ActivityProviderregistry sactivityProviderRegistry,TeamRepository steamRepository,): void {return;pteam = schis->ceam;// We don't want to sync partner accounts to Intercom.if (Steam->isPartnerDefaultO === false) «return,$crm = Steam->getCrmConfiqurationO:Create remote IntercomcolllpallysintercomService->createCompany(l"name= steam->getName)"company_1d'= $team->getUuid().'size' => $team->seats,"renore created at'= Steam->geccreacedAt()->geclimestamp),$crm = Steam->getCrmConfigurationO:stler = steam->getliero:stlerlltle = stier?->getlitle ?? 'Unknown';// Create remote Intercom company.# Try sonargube cloud for tree / Download sonargube server |/ Learn more // Don't ask again (14 minutes ago)a Support Daily • in 3 h 13 mA]100% 145Thu 16 Apr 11:47:24U AutomatedReportsCommandTest-CascadeIntegration App Conneconnection.disconnected // boolean - false = OAuth completed, tStep 4 - Only if connection.disconnected === false, the backend is called" javascrip'if (connection && connection.disconnected === false) {awalt axlos.post aolvlincecracion-app-connectrStep 5 - Backend integrationAppConnect marks the SocialAccount asconnecredTeanSetuncontroller.0hn:24%-718• php$socialAccount->setAttribute('state', SocialAccount:: STATE_CONNE"soclalAccount→ssavesthas->eventDispatcher->oispatchlnew SocialAccountconnectedssocIt does not call Integration App's APl to verity. It just trusts the frontend.summary — wnat Neeas to be Presenttor the whole ining toWorkWnarWnereMust maveValid JWT tokenSocialAccount.provider user tokenTeam UUlD as id, signedwith correct secret. notProvider nameCRM configuration → RouteProviderl istMust match Integration Appintegration key exactlysocla lAccountrecordDB, provider = "inteCreated during integrationAnnlloken calllPromise resolves disconnected: falseIntegration App SDKUser must complete OAuthin the modaAsk anything (2+L)+ @ CodeClaude Sonnet 4.64 anlerencesWWinasun leams214:45uir-oia 4 spaces...
|
NULL
|
|
23910
|
516
|
48
|
2026-04-15T11:49:39.757189+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776253779757_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FinderFileEditViewGoWindowHelpHomeDMsActivityFile +FinderFileEditViewGoWindowHelpHomeDMsActivityFilesLater..•More+→Search Jiminny IncJiminny ...+# 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 Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaP. Nikolay Nikolov l®!2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 226 0+MessagesO FilesBookmarksCircleCl APPTodayDeployment successful!Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP1:53 PM2 new commits pushed tomasterby des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAa...NelActivity MonitorAll ProcessesProcess NameWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentCode Helper (Renderer)FirefoxCP Isolated Web ContentClaudeFirefoxCP Isolated Web ContentMEMORY PRESSURE# Support Daily • in 11 mMem...1,09 GB960,9 MB920,7 MB837,4 MB770,1 MB734,2 MB544,3 MB525,3 MB501,8 MB472,2 MB442,4 MB439,0 MB436,3 MB386,5 MB383,3 MB372,0 MB365,9 MB342,7 MB326,1 MB322,9 MB293,7 MB258,8 MB252,5 MB232,9 MB214,7 MB204,3 MB191,6 MB189,8 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% (C47Wed 15 Apr 14:49:39CPUMemoryDiskThreads20267383325262429232415252626232315132027152718285925EnergyPorts19 2171267311 20319 542125250125241119123184123124127121119172723131242091 792125247129724123PID40742974801414664842420301467336713801935480352764186335831436524301648173368982654850910114835833605194878561388534048298604917429516,00 GB13,49 GB <2,45 GB2,85 GBApp Memory:Wired Memory:Compressed:NetworkUser_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas5,14 GB2,32 GB5,47 GB...
|
NULL
|
9110068242709861259
|
NULL
|
visual_change
|
ocr
|
NULL
|
+FinderFileEditViewGoWindowHelpHomeDMsActivityFile +FinderFileEditViewGoWindowHelpHomeDMsActivityFilesLater..•More+→Search Jiminny IncJiminny ...+# 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 Vasilev XSteliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaP. Nikolay Nikolov l®!2 Galya Dimitrova, Ni...#: AppsJira CloudToast# releases8 226 0+MessagesO FilesBookmarksCircleCl APPTodayDeployment successful!Project: appWhen:04/15/202609:51:25Tag:View JobGitHub APP1:53 PM2 new commits pushed tomasterby des-d0344ab16 - JY-20151: Enhance waveformdisplay with talk-to-listen ratio and stylingadjustments3c043232 - Merge pull request #11967from jiminny/JY-20151-add-talk-to-listen-to-the-waveform( jiminny/app Added by GitHubCircleCl APP2:18 PMDeployment Successful!Project: appWhen:04/15/202611:18:51Tag:View JobMessage #releasesAa...NelActivity MonitorAll ProcessesProcess NameWindowServerFirefoxCP Isolated Web ContentFirefoxFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentSlack Helper (Renderer)FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentNotion Calendar Helper (Renderer)claudeNotion Helper (Renderer)FirefoxCP Isolated Web ContentClaude Helper (Renderer)iTerm2FirefoxCP Isolated Web ContentCode Helper (Renderer)FirefoxCP Isolated Web ContentClaudeFirefoxCP Isolated Web ContentMEMORY PRESSURE# Support Daily • in 11 mMem...1,09 GB960,9 MB920,7 MB837,4 MB770,1 MB734,2 MB544,3 MB525,3 MB501,8 MB472,2 MB442,4 MB439,0 MB436,3 MB386,5 MB383,3 MB372,0 MB365,9 MB342,7 MB326,1 MB322,9 MB293,7 MB258,8 MB252,5 MB232,9 MB214,7 MB204,3 MB191,6 MB189,8 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% (C47Wed 15 Apr 14:49:39CPUMemoryDiskThreads20267383325262429232415252626232315132027152718285925EnergyPorts19 2171267311 20319 542125250125241119123184123124127121119172723131242091 792125247129724123PID40742974801414664842420301467336713801935480352764186335831436524301648173368982654850910114835833605194878561388534048298604917429516,00 GB13,49 GB <2,45 GB2,85 GBApp Memory:Wired Memory:Compressed:NetworkUser_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas5,14 GB2,32 GB5,47 GB...
|
NULL
|
|
80605
|
2130
|
15
|
2026-04-25T14:30:20.207995+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-25/1777 /Users/lukas/.screenpipe/data/data/2026-04-25/1777127420207_m2.jpg...
|
Firefox
|
Screenpipe — Archive — Personal
|
1
|
http://192.168.0.242:8766
|
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
Close tab
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
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 6175.9MB]
Screenpipe
[archive.db · 6175.9MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
23
/
04
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
23 Apr 10:01 · Firefox / Meet - Daily - Platform — Work
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"DXP4800PLUS-B5F8","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.03673537,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"5 Signs You Have Successfully Hurt a Narcissist; - kovaliklukas@gmail.com - Gmail","depth":4,"bounds":{"left":0.03856383,"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.07513298,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"top":0.2585794,"width":0.113696806,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Screenpipe — Archive","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.037898935,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.10139628,"top":0.26576218,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"SQLite Web: archive.db","depth":4,"bounds":{"left":0.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"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.0,"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.013297873,"top":0.49880287,"width":0.28075132,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Gitea Official Website","depth":4,"bounds":{"left":0.0,"top":0.5203512,"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":"Gitea Official Website","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.03756649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":4,"bounds":{"left":0.0,"top":0.55307263,"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":"lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.10555186,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.58739024,"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.0028257978,"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 Le Chat Mistral (⌃X)","depth":6,"bounds":{"left":0.013796543,"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.024933511,"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.036070477,"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Screenpipe [archive.db · 6175.9MB]","depth":7,"bounds":{"left":0.12034574,"top":0.061452515,"width":0.06499335,"height":0.017956903},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Screenpipe","depth":8,"bounds":{"left":0.12034574,"top":0.06304868,"width":0.027759308,"height":0.014764565},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[archive.db · 6175.9MB]","depth":9,"bounds":{"left":0.14943483,"top":0.06703911,"width":0.035904255,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Activity","depth":7,"bounds":{"left":0.18999335,"top":0.059856344,"width":0.024767287,"height":0.0207502},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Search","depth":7,"bounds":{"left":0.21542554,"top":0.059856344,"width":0.023603724,"height":0.0207502},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Audio","depth":7,"bounds":{"left":0.23969415,"top":0.059856344,"width":0.021110373,"height":0.0207502},"help_text":"No audio data in this database","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Work Report","depth":7,"bounds":{"left":0.26146942,"top":0.059856344,"width":0.034906916,"height":0.0207502},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Timetable","depth":7,"bounds":{"left":0.29704124,"top":0.059856344,"width":0.029753989,"height":0.0207502},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"AI Summary","depth":7,"bounds":{"left":0.3274601,"top":0.059856344,"width":0.034242023,"height":0.0207502},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Date","depth":8,"bounds":{"left":0.93849736,"top":0.0650439,"width":0.008144947,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23","depth":9,"bounds":{"left":0.9552859,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.96110374,"top":0.06464485,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"04","depth":9,"bounds":{"left":0.9644282,"top":0.06464485,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":8,"bounds":{"left":0.970246,"top":0.06464485,"width":0.002493351,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2026","depth":9,"bounds":{"left":0.9737367,"top":0.06464485,"width":0.009474734,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Calendar","depth":8,"bounds":{"left":0.98454124,"top":0.0650439,"width":0.0051529254,"height":0.010774142},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Monitor","depth":9,"bounds":{"left":0.34740692,"top":0.10853951,"width":0.013464096,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jump to","depth":9,"bounds":{"left":0.7059508,"top":0.10853951,"width":0.01412899,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.72606385,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":":","depth":9,"bounds":{"left":0.7318817,"top":0.10814046,"width":0.0023271276,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"--","depth":10,"bounds":{"left":0.7352061,"top":0.10814046,"width":0.0048204786,"height":0.011572227},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Go","depth":8,"bounds":{"left":0.75398934,"top":0.10454908,"width":0.012300532,"height":0.018754989},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN","depth":10,"bounds":{"left":0.35239363,"top":0.14964086,"width":0.10571808,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"−","depth":9,"bounds":{"left":0.7087766,"top":0.1452514,"width":0.009807181,"height":0.018754989},"help_text":"Zoom out","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1×","depth":10,"bounds":{"left":0.72273934,"top":0.14924182,"width":0.004155585,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"+","depth":9,"bounds":{"left":0.7312167,"top":0.1452514,"width":0.009640957,"height":0.018754989},"help_text":"Zoom in","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Follow","depth":10,"bounds":{"left":0.74418217,"top":0.14924182,"width":0.004654255,"height":0.011173184},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Follow","depth":10,"bounds":{"left":0.75016624,"top":0.14924182,"width":0.011136968,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"09:30","depth":13,"bounds":{"left":0.37300533,"top":0.21947326,"width":0.00880984,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:00","depth":13,"bounds":{"left":0.41572472,"top":0.21947326,"width":0.00831117,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10:30","depth":13,"bounds":{"left":0.4582779,"top":0.21947326,"width":0.008144947,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:00","depth":13,"bounds":{"left":0.50099736,"top":0.21947326,"width":0.0078125,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11:30","depth":13,"bounds":{"left":0.54355055,"top":0.21947326,"width":0.0076462766,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:00","depth":13,"bounds":{"left":0.58577126,"top":0.21947326,"width":0.008144947,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12:30","depth":13,"bounds":{"left":0.62832445,"top":0.21947326,"width":0.008144947,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:00","depth":13,"bounds":{"left":0.67071146,"top":0.21947326,"width":0.00831117,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13:30","depth":13,"bounds":{"left":0.71326464,"top":0.21947326,"width":0.008144947,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14:00","depth":13,"bounds":{"left":0.75581783,"top":0.21947326,"width":0.008144947,"height":0.008778931},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Apr 10:01 · Firefox / Meet - Daily - Platform — Work","depth":10,"bounds":{"left":0.35106382,"top":0.2661612,"width":0.10172872,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"⏮ 30s","depth":9,"bounds":{"left":0.35172874,"top":0.8882682,"width":0.023936171,"height":0.02434158},"help_text":"Ctrl+←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"◀ 10s","depth":9,"bounds":{"left":0.37832448,"top":0.8886672,"width":0.02244016,"height":0.023942538},"help_text":"←","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"⏸ Pause","depth":9,"bounds":{"left":0.4034242,"top":0.8882682,"width":0.027925532,"height":0.02434158},"help_text":"Space","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"10s ▶","depth":9,"bounds":{"left":0.4340093,"top":0.8886672,"width":0.022273935,"height":0.023942538},"help_text":"→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"30s ⏭","depth":9,"bounds":{"left":0.45894283,"top":0.8882682,"width":0.024102394,"height":0.02434158},"help_text":"Ctrl+→","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9109752054521655373
|
-3965633595050538481
|
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
Close tab
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
Gitea Official Website
Gitea Official Website
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
lakylak/screenpipe - screenpipe - Gitea: Git with a cup of tea
New Tab
Customize sidebar
Open Le Chat Mistral (⌃X)
Open history (⇧⌘H)
Open bookmarks (⌘B)
Bitwarden
Screenpipe [archive.db · 6175.9MB]
Screenpipe
[archive.db · 6175.9MB]
Activity
Search
Audio
Work Report
Timetable
AI Summary
Date
23
/
04
/
2026
Calendar
Monitor
Jump to
--
:
--
Go
APP TIMELINE · CLICK TO PLAY · DRAG SCROLLBAR TO PAN
−
1×
+
Follow
Follow
09:30
10:00
10:30
11:00
11:30
12:00
12:30
13:00
13:30
14:00
23 Apr 10:01 · Firefox / Meet - Daily - Platform — Work
⏮ 30s
◀ 10s
⏸ Pause
10s ▶
30s ⏭...
|
NULL
|
|
9882
|
189
|
49
|
2026-04-14T07:56:25.338049+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776153385338_m2.jpg...
|
Firefox
|
Unauthorized — Work
|
1
|
us-east-2.console.aws.amazon.com/cloudwatch/home?c us-east-2.console.aws.amazon.com/cloudwatch/home?ca-oauth-flow-id=847b&hashArgs=%23logsV2%3Alogs-insights%243FqueryDetail%243D~(end~0~start~-3600~timeType~'RELATIVE~tz~'UTC~unit~'seconds~editorString~'fields*20*40timestamp*2c*20*40message*2c*20*40logStream*2c*20*40log*0a*7c*20filter*20*40message*20like*20*2fXXXXX*2f*20*0a*7c*20filter*20*40message*20not*20like*20*2fAnalytic*2f*20*7c*20filter*20*40message*20not*20like*20*2fTranscript*2f*0a*7c*20filter*20*40message*20not*20like*20*2fWebhook*2f*20*7c*20filter*20*40message*20not*20like*20*2fMeetingBot*2f*20*0a*7c*20limit*2010000~queryId~'0551e814-f51a-4339-8372-80d7ba4cef27~source~(~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-analytics~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-app~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-audio~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-calendar~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-conferences~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-crm-sync~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-default~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-delayed~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-dialers~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-dialers-fifo~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-download~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-emails~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-meeting-bot~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-nudges~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-1~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-2~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-3~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-4~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-5~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-processing-delayed~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-softphone~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-video~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aworker-video-app~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aphp~'arn*3aaws*3alogs*3aus-east-2*3a410346195943*3alog-group*3aphp-app)~lang~'CWLI~logClass~'STANDARD~queryBy~'logGroupName)&isauthcode=true&oauthStart=1776153363251®ion=us-east-2&state=hashArgsFromTB_us-east-2_bf524caeb24e5caf&code=eyJ6aXAiOiJERUYiLCJlbmMiOiJBMjU2R0NNIiwiYWxnIjoiZGlyIn0..4B-AKC0sKC-g9MBL.FqaihmZpD-mcXvzGco7yvqkyb1sPwpWzlYDjyv46-meUGLl9zfx5N1SZs0mvepMbdda1X-obM5eLea_XkdcPW2VoEu-_MnEdUAduBgvXbwBX6JYm6GEhran7nz-F2Cgm14o8tzmgQ7-lcLn0ZSfiZUavr2reMgpwauFa_Eugw_M447LL-1kG9cgnC0egk-vE5H8EmBF869p-0FOVDDey0GpGqxUw0mbTvw7ilqU1IyMD06I8M--6uPtanvO9luYidziE93_WkLv7BGKf6i4rD0Y-Faep-vvNKHuLJC5gamTNA5Yvu876islyE1KZsXGWtjQ-3XAp8SvStKt_D2DfiSOI5bINXV8xkFytWfi-qr7-L-U3-pKqwWgj-HiUoo4tlpQ0tOA5u02WWHqSvYxWGhkqVCqhUQtcDO09J-FHfelMVhxHNoYp65O_W-3K7W1UD79DgOz27xQZpXSrU4GYKSUQud2tQTjmoBb-5KtRTo3sdX3G9lzXkhlRpid7GQReCzYTaHNgb9GNyPa6VbzqfmkgoaONtPwpDIq4mLYJn166PqBpEJtTenge5IdTwc-1mtj2_QIxY58uzhfy9yZ6fnzHbngtt_ol0BvY2sMwP2Buit08CmauWD3nspm1HJU93iknsmOIlaF81u6Ua9npe6p-1XpVruC_FADy9KSZBso7pobJLVs4e8lGKKElknwjMRNPYhn0v1-prhINURiTYoKEygV9BEw34BSJ1UXJezlGY8N71dpD_7icQIgYWqy1uFP9fFn2Y92NWDBqOks5iW8kgMnD7i-e5ceYc1JrRAtDWNCAGj5ARE5V-e8_RY84zmo8NS6jBlD7JF-EBwX5VC_-V9yzecJ84hO-nI3S4qfvkWuI0wGbu1FYKJHO73LYp39xTSTXppL8vY2V4Zk4lS91j2Sl8YEMh9J4TnvW3cxGm55jtfIu8mGT_HyIg4wLkfvLVsv0JBfCLS_l1nvFcx7nOY0j6P8jper_kpl_LUjI8h9JiQU8weHeZqILodqrnnkLmUsBaIAqq-QKgyFs6roLjny-YOGDXXJNnI-SzPg44SY928kyoTfJokr3gEoD5Tp6PkDstmdn-A1liNNZ_5ByR-wlvteaoIcr6-xKQXwgqCjlPO1dSNCPIIRFW8C3uAKHODxKu617yS7MXzpuk2JuIGlQ9DBdLoKTIR4-vI_a_wEN6KIr151s_TZnbkgCgmfiON9Advca5-VGCSmNviBj_ghH2wZ0RTvKLIv1xX-1GgDp-KjkUiQas8JDJ8alIbJFRxmyJ_wg7ub2-236owXJJX9dtsBYRbTjCi9_2FJFga7k0ysqkzd2Jw_wm2OMN_Xg-CR3GAD8btI2VVh78CY3ks9adTdZ8HTar61C4lsO9G5LVZ-7hW2ZWmpmHvoAE481ubFIK7bxBdi7xa02Kv4vZkKV4yfc5xL91GasAfupYmYQRtA0PApKiq3GXDceMWrW88bX9vGgGosAEiaS_hE6dNRcAsG9IMLflTF2120CpwadWSSw88DapCkwzY_HZ22Fwe5XsoZZMLv-ntlx8de_QbvtVcog7xN2LtF303FCvJacJxNaqj_DdnqdwtyFbkBerqGO4XgzaFPqTQFw2rJFPvKQ7JfbTOvekWPSF94OlTvFNKreQhy2budMTIhUhwyBrsX-1kgsjz1kHD6PyHzfZH3PXaT4mcyDoHLZzGIV7qmq3CGT.3008CPJSc4KYelszeI6Ang...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | us-east-2
Console Home | Console Home | us-east-2
SecurityGroup | EC2 | us-east-2
SecurityGroup | EC2 | us-east-2
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jiminny
Jiminny
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Unauthorized
Unauthorized
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Unauthorized
Unauthorized
An error occurred when we tried to process your request.
Try again in a few minutes or sign in below.
Sign in
Sign in...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","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":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","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":"Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira","depth":5,"bounds":{"left":0.015625,"top":0.09236111,"width":0.11796875,"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.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":"Configure SSH access to multiple environment - Engineering - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Console Home | Console Home | us-east-2","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":"Console Home | Console Home | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.08671875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SecurityGroup | EC2 | us-east-2","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":"SecurityGroup | EC2 | us-east-2","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.06484375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.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":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.18710938,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.23476562,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet","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":"Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.1984375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","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":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","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":false},{"role":"AXStaticText","text":"Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.1640625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.0,"top":0.33888888,"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":"Service-Desk - Queues - Platform team - Service space - Jira","depth":5,"bounds":{"left":0.015625,"top":0.34861112,"width":0.12617187,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.3673611,"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-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.37708333,"width":0.18710938,"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.39583334,"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.40555555,"width":0.1515625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Unauthorized","depth":4,"bounds":{"left":0.0,"top":0.42430556,"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":"Unauthorized","depth":5,"bounds":{"left":0.015625,"top":0.4340278,"width":0.02734375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.43055555,"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.45416668,"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":"AXHeading","text":"Unauthorized","depth":7,"bounds":{"left":0.4203125,"top":0.26944444,"width":0.25390625,"height":0.02638889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unauthorized","depth":8,"bounds":{"left":0.4203125,"top":0.27222222,"width":0.059765626,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"An error occurred when we tried to process your request.","depth":9,"bounds":{"left":0.4203125,"top":0.29930556,"width":0.13984375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Try again in a few minutes or sign in below.","depth":9,"bounds":{"left":0.4203125,"top":0.31875,"width":0.10664062,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sign in","depth":8,"bounds":{"left":0.4203125,"top":0.34305555,"width":0.034765624,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in","depth":9,"bounds":{"left":0.42890626,"top":0.34791666,"width":0.017578125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9109597749905648967
|
1238860572540924494
|
visual_change
|
accessibility
|
NULL
|
JY-20543 add AJ reports User pilot tracking by Lak JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Platform Sprint 1 Q2 - Platform Team - Scrum Board - Jira
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Console Home | Console Home | us-east-2
Console Home | Console Home | us-east-2
SecurityGroup | EC2 | us-east-2
SecurityGroup | EC2 | us-east-2
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
SRD-6779 | JY-20632 | Unable to log in to Sidekick with SSO by yalokin-jiminny · Pull Request #11935 · jiminny/app
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jy 19798 evaluation for ai activity types by nikolaybiaivanov · Pull Request #468 · jiminny/prophet
Jiminny
Jiminny
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Ask Jiminny test report - 8 Apr 2026 - Ask Jiminny test report - 13 Apr 2026.pdf
Service-Desk - Queues - Platform team - Service space - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Configure SSH access to multiple environment - Engineering - Confluence
Configure SSH access to multiple environment - Engineering - Confluence
Unauthorized
Unauthorized
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Unauthorized
Unauthorized
An error occurred when we tried to process your request.
Try again in a few minutes or sign in below.
Sign in
Sign in...
|
NULL
|
|
47701
|
NULL
|
0
|
2026-04-17T11:56:02.834541+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776426962834_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help== accounts.google.com/signin/oauth/consent?as=S1242662876%3A1776426949273943&authuser=1&client_id=827025697740-iohrve9ot2mkt6fj56a44r4qo97m55de.apps.googleusercontent.com&flowName=GeneralOAuthFlow&part=AJi8hAPDgj1rf2K-HUymRj07wyv8Zb-5zpQxjYgTcInspector• ConsoleD DebuggerT Network {} Style EditorPerformance: MemoryStorageY Integij Support Daily • in 4mi Accessibility88: Application423 hidden XA100% CS•Fri 17 Apr 14:56:02Errors Warnings Info Logs DebugCSS XHR Requests *Developers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM 120216 is your HubSpot Log In ColCa CloudWatch | eu-west-1New TabZ Configure SSH access to multiple. fix-cache-for-business-processes4 [JY-20692] Issue with reconnectirSign in - Google accountsAuth ProxyDashooard : Jiminny • vemoraneApo "4oho CkM" • Jiminny • Memc+ New Tab301YF149hA0QpbuNnqx53gphOjFgeL6wDQfqvLBTSMVL5X0Poh9kN1hYXWjDjc4SIhSv1UapKMZD_0vzL1Nd-LNti0EdLWhNAP_zI2qnsdxtxt8pX_40_10I0-FtbrbCD2T2Lachycv6X sACyEw-DgsweVzFa2voxEmYA34176428-SatoWVfOoyDdMJUKtK20Ugr7_ redbOGrapt=AEJ HL403w:5H/2DnYSTđpTUVL* Navigated to https://app.dev.jiminny.com/auth/callback/google?stateeyanttas e5o1032k221mgu2i6k2o0tsT2C 14-90gTCmOe/YAC5 BN0T bGликnV: o0р ubCPebhPCy9302RрJCA22₽-ro-gNCb/u2mayT120pr12cy20pnas7201aHR:HM6XC9cL2Fvwww.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile%20https://www.googleapis.com/auth/calendar%20https://www.googleapis.com/auth/gillatt. reddon tyoducnuser-tand-cnenny. comeprompL-conseneG Sign in with Googlejiminny.com wants toaccess your [EMAIL] will allow jiminny.com to:M View your email messages and settingsSee, edit, share, and permanently delete all thecalendars you can access using Google CalendarMake sure you trust jiminny.comReview jiminny.com's Privacy Policy and Terms of Service tounderstand how iminny.com will process and protect your data.To make changes at any time, go to your Google Account.eain now coocle nellos vou snare cata sarev.CanceAllow hEnglish (United States)HelpPrivacyTerms203...
|
NULL
|
9109564888349226639
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow Help== accounts.google.com/signin/oauth/consent?as=S1242662876%3A1776426949273943&authuser=1&client_id=827025697740-iohrve9ot2mkt6fj56a44r4qo97m55de.apps.googleusercontent.com&flowName=GeneralOAuthFlow&part=AJi8hAPDgj1rf2K-HUymRj07wyv8Zb-5zpQxjYgTcInspector• ConsoleD DebuggerT Network {} Style EditorPerformance: MemoryStorageY Integij Support Daily • in 4mi Accessibility88: Application423 hidden XA100% CS•Fri 17 Apr 14:56:02Errors Warnings Info Logs DebugCSS XHR Requests *Developers | HubSpotM'inbox (1,576) - lukas.kovalik@jiminM 120216 is your HubSpot Log In ColCa CloudWatch | eu-west-1New TabZ Configure SSH access to multiple. fix-cache-for-business-processes4 [JY-20692] Issue with reconnectirSign in - Google accountsAuth ProxyDashooard : Jiminny • vemoraneApo "4oho CkM" • Jiminny • Memc+ New Tab301YF149hA0QpbuNnqx53gphOjFgeL6wDQfqvLBTSMVL5X0Poh9kN1hYXWjDjc4SIhSv1UapKMZD_0vzL1Nd-LNti0EdLWhNAP_zI2qnsdxtxt8pX_40_10I0-FtbrbCD2T2Lachycv6X sACyEw-DgsweVzFa2voxEmYA34176428-SatoWVfOoyDdMJUKtK20Ugr7_ redbOGrapt=AEJ HL403w:5H/2DnYSTđpTUVL* Navigated to https://app.dev.jiminny.com/auth/callback/google?stateeyanttas e5o1032k221mgu2i6k2o0tsT2C 14-90gTCmOe/YAC5 BN0T bGликnV: o0р ubCPebhPCy9302RрJCA22₽-ro-gNCb/u2mayT120pr12cy20pnas7201aHR:HM6XC9cL2Fvwww.googleapis.com/auth/userinfo.email%20https://www.googleapis.com/auth/userinfo.profile%20https://www.googleapis.com/auth/calendar%20https://www.googleapis.com/auth/gillatt. reddon tyoducnuser-tand-cnenny. comeprompL-conseneG Sign in with Googlejiminny.com wants toaccess your [EMAIL] will allow jiminny.com to:M View your email messages and settingsSee, edit, share, and permanently delete all thecalendars you can access using Google CalendarMake sure you trust jiminny.comReview jiminny.com's Privacy Policy and Terms of Service tounderstand how iminny.com will process and protect your data.To make changes at any time, go to your Google Account.eain now coocle nellos vou snare cata sarev.CanceAllow hEnglish (United States)HelpPrivacyTerms203...
|
NULL
|
|
34363
|
693
|
2
|
2026-04-16T08:32:06.706033+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776328326706_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewHistoryWindowHelpSearch: in:#jimi SlackFileEditViewHistoryWindowHelpSearch: in:#jiminny-x-integration-app promiseResults for: prom...Home= Filters (1)© resultsDMsAchivityGive feedbackThread e jiminny-x-integration-appSort: Most relevant (default) v@ok, let's align Promise part first as l'm confused therelassume vou call SDK method and it returns a promise for all connections expect zoho?Or the problem is that after user got authorised - Ul is not refreshed to reflect that?LuKas KovallK Jun 3rd, 2025 at 5:10 PMwe need the connection obiect so we can see if the client has been successfullvconnectedFilesMoreLukas Kovalikuminny-x-inted.Zuzs au4.38 PM1. There appears to be arecent change in the SDK•Auth mechanism. Whenanew cllent connecis tothe platform using Zoho,we no longer receive aPromise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection) uponsuccessful ... Show more(edited)console.integration.app47 repliesLukas Kovalikloday at@ lminnv-x-inedra.. 11:04Hi guys, we have one issuewe used to have beforeregarding theauthorisation for ZohoCRM. When the clients gothrough all steps and loginit just returns him back tothe login screen. I believeunis is the rererence to ine… Snow moree Lukas Kovalik1. There appears tone a recemchange in theSDK OAuthmechanism.When a newclient connects tothe platform usingZoho, we nolonger receive aPromise(https://console.integration.app/ref/sek casses/nteetauonAccessor.numl#openNewConnection) uponsuccessful login.This functionalitywas working justa few weeks ago.wnen callliing nues.co.nieccron.aop/mcccuons/zonocdm leclteolCleanShot 2025-06-03 at [EMAIL] -т чkсу: zonoch, state. "KeAuT, errors. Un isueacevarco. Tacrault Authent icat ion". twcreatedAt: "2025-84-16T21:32:24.2882disconnected: falseintegrationid: "66fe6c913202f3a165e3c14d™2625-06-03T08:00:24.6667*d893e86e-175c-4821-a857-89d4c4e4018a™"2.1.170)7200232e076dataCollectionsCount: 19v) Bohdan Jun 3rd, 2025 at 5:12 PM©so the promise that you awaited is empty?Lukas Kovalik Jun 3rd, 2025 at 5:12 PMCleansnol 4025-00-03 211104 a 4x.ongvconst integrationApp = new IntegrationAppClient(ftoken. chis. crmloken,7):const conneccion = awalc incegraclonapp.ntecracion.cn1s.loca.rrovzder.namey-gpenNewConnection({showPoweredbv: talse.aLlowiultznlelonnectzons: ralse.) Bohdan Jun 3rd, 2025 at 5:12 PM@ ok, and it happens only for zoho?Daniil Jun 3rd, 2025 at 5:12 PM*I am getting a promise with response from connections in SDKCleanShot 2025-06-03 21 10 1222.009 7App:p55255561563565566567.568 v56957057357457515 B= custom.logA console [PROD]= laravel.logA SF [jiminny@localhost]A console [STAGING] XA HS_local [jiminny@localhost]Al console [EU]IX. AUlo vHaycround vFRUM playdooks pJoin playbook_cacegories pc1<->1.n: on p.id = pc.playbook_idwnere orrealio = ano p.acmury tvoe ='event.SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event' ;SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts plwhere crm_configuration_id = 1 and pl.playbook_id = 175;1<->1.n: on cl.id = pl.layout_idselect * from teams;Euee** Frur autonared redortsjoin teams t on r.teamid = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRicesat >= now() OR r.expinesat IS NULL);select * from automated_report_results where ceRontand IN (18, 33);select * from activity_searches where id = 10932;select * from activity_search_filters where activity_search_id = 10932;select * from automated_reports order by id desc;select * from automated_report_results order by ia hesc;select * from automated_report_results where ceportaid IN (37);select * from users where id IN (7160, 3248);SELECT * FROM automated_reports WHERE uvid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid:40liblj Support Daily • in 3 h 28 mA100% C4Thu 16 Apr 11:32:06AutomatedReportsCommandTest-Cascade© Integration App ConMa lminny v018 A 16 X 13 ^Review how is the integration app connected. I am looking for this part ofcoue ahe now does ll wolk.ea Fast Context IntecrationApoClient new Intearation oven....In 4.98sThe code in the image is frontend JavaScript, not backend PHP. Let meseareh tne trontene for tnis oalternExoloree Z Tles ano searcheo IntecralionaooulleNow ler me look at the backend AP endhoints that are callied after theeeinlabenialaiicoavalicabecnlelnasleleneletaulnisearched integralloExploring.cuintegration-app-loken in ~/iminny app.. >Ask anything (884L)+ <> CodeClaude Sonnet 4.64 omerencesCurrent versionuiminny Joos leam › syncloiiercom vvvvvvvvvveIntercomService $intercomService,ActivityProviderRegistry $activityProviderRegistry,TeamRepository $teamRepository,): void {return;$team = $this->team;// We don't want to sync partner accounts to Intercom.if ($team->isPartnerDefault() === false) {return;$crm = $team->getCrmConfiguration();$tier = $team->getTier();$tierTitle = $tier?->getTitle() ?? 'Unknown';// Create remote Intercom company.W Windsurf Teams...
|
NULL
|
9109343356388582382
|
NULL
|
visual_change
|
ocr
|
NULL
|
SlackFileEditViewHistoryWindowHelpSearch: in:#jimi SlackFileEditViewHistoryWindowHelpSearch: in:#jiminny-x-integration-app promiseResults for: prom...Home= Filters (1)© resultsDMsAchivityGive feedbackThread e jiminny-x-integration-appSort: Most relevant (default) v@ok, let's align Promise part first as l'm confused therelassume vou call SDK method and it returns a promise for all connections expect zoho?Or the problem is that after user got authorised - Ul is not refreshed to reflect that?LuKas KovallK Jun 3rd, 2025 at 5:10 PMwe need the connection obiect so we can see if the client has been successfullvconnectedFilesMoreLukas Kovalikuminny-x-inted.Zuzs au4.38 PM1. There appears to be arecent change in the SDK•Auth mechanism. Whenanew cllent connecis tothe platform using Zoho,we no longer receive aPromise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection) uponsuccessful ... Show more(edited)console.integration.app47 repliesLukas Kovalikloday at@ lminnv-x-inedra.. 11:04Hi guys, we have one issuewe used to have beforeregarding theauthorisation for ZohoCRM. When the clients gothrough all steps and loginit just returns him back tothe login screen. I believeunis is the rererence to ine… Snow moree Lukas Kovalik1. There appears tone a recemchange in theSDK OAuthmechanism.When a newclient connects tothe platform usingZoho, we nolonger receive aPromise(https://console.integration.app/ref/sek casses/nteetauonAccessor.numl#openNewConnection) uponsuccessful login.This functionalitywas working justa few weeks ago.wnen callliing nues.co.nieccron.aop/mcccuons/zonocdm leclteolCleanShot 2025-06-03 at [EMAIL] -т чkсу: zonoch, state. "KeAuT, errors. Un isueacevarco. Tacrault Authent icat ion". twcreatedAt: "2025-84-16T21:32:24.2882disconnected: falseintegrationid: "66fe6c913202f3a165e3c14d™2625-06-03T08:00:24.6667*d893e86e-175c-4821-a857-89d4c4e4018a™"2.1.170)7200232e076dataCollectionsCount: 19v) Bohdan Jun 3rd, 2025 at 5:12 PM©so the promise that you awaited is empty?Lukas Kovalik Jun 3rd, 2025 at 5:12 PMCleansnol 4025-00-03 211104 a 4x.ongvconst integrationApp = new IntegrationAppClient(ftoken. chis. crmloken,7):const conneccion = awalc incegraclonapp.ntecracion.cn1s.loca.rrovzder.namey-gpenNewConnection({showPoweredbv: talse.aLlowiultznlelonnectzons: ralse.) Bohdan Jun 3rd, 2025 at 5:12 PM@ ok, and it happens only for zoho?Daniil Jun 3rd, 2025 at 5:12 PM*I am getting a promise with response from connections in SDKCleanShot 2025-06-03 21 10 1222.009 7App:p55255561563565566567.568 v56957057357457515 B= custom.logA console [PROD]= laravel.logA SF [jiminny@localhost]A console [STAGING] XA HS_local [jiminny@localhost]Al console [EU]IX. AUlo vHaycround vFRUM playdooks pJoin playbook_cacegories pc1<->1.n: on p.id = pc.playbook_idwnere orrealio = ano p.acmury tvoe ='event.SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event' ;SELECT * FROM crm_field_values WHERE crm_field_id = 4;select * from crm_layouts cl join playbook_layouts plwhere crm_configuration_id = 1 and pl.playbook_id = 175;1<->1.n: on cl.id = pl.layout_idselect * from teams;Euee** Frur autonared redortsjoin teams t on r.teamid = t.idWHERE r. frequency = 'daily'and r.status = 1AND t.status = 'active'AND (r.exRicesat >= now() OR r.expinesat IS NULL);select * from automated_report_results where ceRontand IN (18, 33);select * from activity_searches where id = 10932;select * from activity_search_filters where activity_search_id = 10932;select * from automated_reports order by id desc;select * from automated_report_results order by ia hesc;select * from automated_report_results where ceportaid IN (37);select * from users where id IN (7160, 3248);SELECT * FROM automated_reports WHERE uvid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid:40liblj Support Daily • in 3 h 28 mA100% C4Thu 16 Apr 11:32:06AutomatedReportsCommandTest-Cascade© Integration App ConMa lminny v018 A 16 X 13 ^Review how is the integration app connected. I am looking for this part ofcoue ahe now does ll wolk.ea Fast Context IntecrationApoClient new Intearation oven....In 4.98sThe code in the image is frontend JavaScript, not backend PHP. Let meseareh tne trontene for tnis oalternExoloree Z Tles ano searcheo IntecralionaooulleNow ler me look at the backend AP endhoints that are callied after theeeinlabenialaiicoavalicabecnlelnasleleneletaulnisearched integralloExploring.cuintegration-app-loken in ~/iminny app.. >Ask anything (884L)+ <> CodeClaude Sonnet 4.64 omerencesCurrent versionuiminny Joos leam › syncloiiercom vvvvvvvvvveIntercomService $intercomService,ActivityProviderRegistry $activityProviderRegistry,TeamRepository $teamRepository,): void {return;$team = $this->team;// We don't want to sync partner accounts to Intercom.if ($team->isPartnerDefault() === false) {return;$crm = $team->getCrmConfiguration();$tier = $team->getTier();$tierTitle = $tier?->getTitle() ?? 'Unknown';// Create remote Intercom company.W Windsurf Teams...
|
34362
|
|
54868
|
1184
|
75
|
2026-04-20T09:21:49.474853+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776676909474_m2.jpg...
|
PhpStorm
|
faVsco.js – laravel.log
|
1
|
NULL
|
monitor_2
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Activities;
use Illuminate\Console\Command;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Models\Activity;
class UpdateActivityElasticSearchDocumentCommand extends Command
{
protected $signature = 'activity:update:es {activityId}';
protected $description = 'Update ES document synchronously';
public function __construct(private readonly Dispatcher $eventDispatcher)
{
parent::__construct();
}
public function handle(): void
{
$activityId = $this->argument('activityId');
/** @var Activity $activity */
$activity = Activity::idOrUuId($activityId)->first();
$this->info('Sending activity for ES update...');
$this->eventDispatcher->dispatch(
new UpdateSingleEntity(
entityId: $activity->getId(),
updateTarget: UpdateTargetEnum::ACTIVITY,
purpose: 'cli-command-activity-update-es',
)
);
$this->info('Done.');
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Analyzing…
[2026-04-20 09:21:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"c3765525-49b4-4227-94bf-0fb6456cfc41","trace_id":"9fb34c4d-36b7-4222-bbda-42765bd12d07"}
[2026-04-20 09:21:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"c3765525-49b4-4227-94bf-0fb6456cfc41","trace_id":"9fb34c4d-36b7-4222-bbda-42765bd12d07"}
[2026-04-20 09:21:06] local.NOTICE: Monitoring start {"correlation_id":"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22","trace_id":"a9d3761f-6599-444c-87ed-12f02061bf6e"}
[2026-04-20 09:21:06] local.NOTICE: Monitoring end {"correlation_id":"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22","trace_id":"a9d3761f-6599-444c-87ed-12f02061bf6e"}
[2026-04-20 09:21:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"0b2fb20d-3477-4370-8ec9-e85d992f6871","trace_id":"0814f483-2c0e-4477-a433-54d9ae15144d"}
[2026-04-20 09:21:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"0b2fb20d-3477-4370-8ec9-e85d992f6871","trace_id":"0814f483-2c0e-4477-a433-54d9ae15144d"}
[2026-04-20 09:21:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:15] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:15] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":240.0,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.72} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
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.025930852,"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":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Activities;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Events\\Dispatcher;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Models\\Activity;\n\nclass UpdateActivityElasticSearchDocumentCommand extends Command\n{\n protected $signature = 'activity:update:es {activityId}';\n protected $description = 'Update ES document synchronously';\n\n public function __construct(private readonly Dispatcher $eventDispatcher)\n {\n parent::__construct();\n }\n\n public function handle(): void\n {\n $activityId = $this->argument('activityId');\n /** @var Activity $activity */\n $activity = Activity::idOrUuId($activityId)->first();\n $this->info('Sending activity for ES update...');\n\n $this->eventDispatcher->dispatch(\n new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'cli-command-activity-update-es',\n )\n );\n\n $this->info('Done.');\n }\n}","depth":4,"bounds":{"left":0.13597074,"top":0.27055067,"width":0.26728722,"height":0.36871508},"value":"<?php\n\nnamespace Jiminny\\Console\\Commands\\Activities;\n\nuse Illuminate\\Console\\Command;\nuse Illuminate\\Contracts\\Events\\Dispatcher;\nuse Jiminny\\Contracts\\ES\\Events\\UpdateSingleEntity;\nuse Jiminny\\Contracts\\ES\\UpdateTargetEnum;\nuse Jiminny\\Models\\Activity;\n\nclass UpdateActivityElasticSearchDocumentCommand extends Command\n{\n protected $signature = 'activity:update:es {activityId}';\n protected $description = 'Update ES document synchronously';\n\n public function __construct(private readonly Dispatcher $eventDispatcher)\n {\n parent::__construct();\n }\n\n public function handle(): void\n {\n $activityId = $this->argument('activityId');\n /** @var Activity $activity */\n $activity = Activity::idOrUuId($activityId)->first();\n $this->info('Sending activity for ES update...');\n\n $this->eventDispatcher->dispatch(\n new UpdateSingleEntity(\n entityId: $activity->getId(),\n updateTarget: UpdateTargetEnum::ACTIVITY,\n purpose: 'cli-command-activity-update-es',\n )\n );\n\n $this->info('Done.');\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Analyzing…","depth":4,"bounds":{"left":0.70578456,"top":0.10055866,"width":0.019946808,"height":0.015163607},"role_description":"text"},{"role":"AXTextArea","text":"[2026-04-20 09:21:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"c3765525-49b4-4227-94bf-0fb6456cfc41\",\"trace_id\":\"9fb34c4d-36b7-4222-bbda-42765bd12d07\"}\n[2026-04-20 09:21:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"c3765525-49b4-4227-94bf-0fb6456cfc41\",\"trace_id\":\"9fb34c4d-36b7-4222-bbda-42765bd12d07\"}\n[2026-04-20 09:21:06] local.NOTICE: Monitoring start {\"correlation_id\":\"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22\",\"trace_id\":\"a9d3761f-6599-444c-87ed-12f02061bf6e\"}\n[2026-04-20 09:21:06] local.NOTICE: Monitoring end {\"correlation_id\":\"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22\",\"trace_id\":\"a9d3761f-6599-444c-87ed-12f02061bf6e\"}\n[2026-04-20 09:21:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"0b2fb20d-3477-4370-8ec9-e85d992f6871\",\"trace_id\":\"0814f483-2c0e-4477-a433-54d9ae15144d\"}\n[2026-04-20 09:21:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"0b2fb20d-3477-4370-8ec9-e85d992f6871\",\"trace_id\":\"0814f483-2c0e-4477-a433-54d9ae15144d\"}\n[2026-04-20 09:21:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:15] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:15] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":240.0,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.72} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}","depth":4,"bounds":{"left":0.4225399,"top":0.09736632,"width":0.5774601,"height":0.47406226},"value":"[2026-04-20 09:21:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:04] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"meeting-bot:schedule-bot\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"a87b483c-875c-4c3f-aa60-db6fd706544e\",\"trace_id\":\"66a8840c-1c0e-447a-ab5d-7bfb80088a11\"}\n[2026-04-20 09:21:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"c3765525-49b4-4227-94bf-0fb6456cfc41\",\"trace_id\":\"9fb34c4d-36b7-4222-bbda-42765bd12d07\"}\n[2026-04-20 09:21:05] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"dialers:monitor-activities\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"c3765525-49b4-4227-94bf-0fb6456cfc41\",\"trace_id\":\"9fb34c4d-36b7-4222-bbda-42765bd12d07\"}\n[2026-04-20 09:21:06] local.NOTICE: Monitoring start {\"correlation_id\":\"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22\",\"trace_id\":\"a9d3761f-6599-444c-87ed-12f02061bf6e\"}\n[2026-04-20 09:21:06] local.NOTICE: Monitoring end {\"correlation_id\":\"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22\",\"trace_id\":\"a9d3761f-6599-444c-87ed-12f02061bf6e\"}\n[2026-04-20 09:21:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"0b2fb20d-3477-4370-8ec9-e85d992f6871\",\"trace_id\":\"0814f483-2c0e-4477-a433-54d9ae15144d\"}\n[2026-04-20 09:21:07] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:skip-lists:refresh\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"0b2fb20d-3477-4370-8ec9-e85d992f6871\",\"trace_id\":\"0814f483-2c0e-4477-a433-54d9ae15144d\"}\n[2026-04-20 09:21:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage before starting command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryPeakBeforeCommandInMb\":99.723} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: [EmailSchedule] STARTING batch process {\"host\":\"docker_lamp_1\"} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: [EmailSchedule] FINISHED batch process {\"host\":\"docker_lamp_1\",\"processed\":0} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:08] local.INFO: Jiminny\\Console\\Commands\\Command::run Memory usage for command {\"command\":\"mailbox:batch:process\",\"memoryBeforeCommandInMb\":60.0,\"memoryAfterCommandInMB\":60.0,\"memoryPeakBeforeCommandInMb\":99.723,\"memoryPeakAfterCommandInMB\":99.723} {\"correlation_id\":\"53b92983-d9cc-4596-82b7-ff109d623007\",\"trace_id\":\"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161\"}\n[2026-04-20 09:21:15] local.INFO: [HubSpot Journal Polling] Getting offset from database {\"offset\":\"\",\"jiminny_team_id\":1} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:15] local.INFO: [HubSpot Journal API] Fetching latest journal entry {\"url\":\"https://api.hubapi.com/webhooks/v4/journal/latest\"} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] No data {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {\"empty_results\":5,\"max_empty_results\":5} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Service ending {\"runtime_seconds\":57,\"total_cycles\":5,\"files_downloaded\":0,\"empty_files\":0,\"other_portal_skipped\":0,\"total_events\":0,\"events_per_file\":0,\"avg_api_ms\":240.0,\"avg_download_ms\":0.0,\"avg_transform_ms\":0.0,\"avg_process_ms\":0.0,\"peak_memory_mb\":99.72} {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}\n[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Released polling lock {\"correlation_id\":\"1cdd5447-8247-4350-b52a-735301ae8dac\",\"trace_id\":\"01e226d2-bbac-4cf8-85c1-e9366903c55a\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"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}]...
|
9109041236574774928
|
-2517142944654225556
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
<?php
namespace Jiminny\Console\Commands\Activities;
use Illuminate\Console\Command;
use Illuminate\Contracts\Events\Dispatcher;
use Jiminny\Contracts\ES\Events\UpdateSingleEntity;
use Jiminny\Contracts\ES\UpdateTargetEnum;
use Jiminny\Models\Activity;
class UpdateActivityElasticSearchDocumentCommand extends Command
{
protected $signature = 'activity:update:es {activityId}';
protected $description = 'Update ES document synchronously';
public function __construct(private readonly Dispatcher $eventDispatcher)
{
parent::__construct();
}
public function handle(): void
{
$activityId = $this->argument('activityId');
/** @var Activity $activity */
$activity = Activity::idOrUuId($activityId)->first();
$this->info('Sending activity for ES update...');
$this->eventDispatcher->dispatch(
new UpdateSingleEntity(
entityId: $activity->getId(),
updateTarget: UpdateTargetEnum::ACTIVITY,
purpose: 'cli-command-activity-update-es',
)
);
$this->info('Done.');
}
}
Code changed:
Hide
Sync Changes
Hide This Notification
Analyzing…
[2026-04-20 09:21:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:04] local.INFO: [ScheduleBotCommand] Number of activities to be captured: 0 {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:04] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"meeting-bot:schedule-bot","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"a87b483c-875c-4c3f-aa60-db6fd706544e","trace_id":"66a8840c-1c0e-447a-ab5d-7bfb80088a11"}
[2026-04-20 09:21:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"c3765525-49b4-4227-94bf-0fb6456cfc41","trace_id":"9fb34c4d-36b7-4222-bbda-42765bd12d07"}
[2026-04-20 09:21:05] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"dialers:monitor-activities","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"c3765525-49b4-4227-94bf-0fb6456cfc41","trace_id":"9fb34c4d-36b7-4222-bbda-42765bd12d07"}
[2026-04-20 09:21:06] local.NOTICE: Monitoring start {"correlation_id":"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22","trace_id":"a9d3761f-6599-444c-87ed-12f02061bf6e"}
[2026-04-20 09:21:06] local.NOTICE: Monitoring end {"correlation_id":"1aa9cdbc-b976-41c1-ad22-1bd93ba49e22","trace_id":"a9d3761f-6599-444c-87ed-12f02061bf6e"}
[2026-04-20 09:21:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"0b2fb20d-3477-4370-8ec9-e85d992f6871","trace_id":"0814f483-2c0e-4477-a433-54d9ae15144d"}
[2026-04-20 09:21:07] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:skip-lists:refresh","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"0b2fb20d-3477-4370-8ec9-e85d992f6871","trace_id":"0814f483-2c0e-4477-a433-54d9ae15144d"}
[2026-04-20 09:21:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage before starting command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryPeakBeforeCommandInMb":99.723} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: [EmailSchedule] STARTING batch process {"host":"docker_lamp_1"} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: [EmailSchedule] FINISHED batch process {"host":"docker_lamp_1","processed":0} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:08] local.INFO: Jiminny\Console\Commands\Command::run Memory usage for command {"command":"mailbox:batch:process","memoryBeforeCommandInMb":60.0,"memoryAfterCommandInMB":60.0,"memoryPeakBeforeCommandInMb":99.723,"memoryPeakAfterCommandInMB":99.723} {"correlation_id":"53b92983-d9cc-4596-82b7-ff109d623007","trace_id":"8c3c9a9d-7acd-43d7-a4ca-d3e2c951d161"}
[2026-04-20 09:21:15] local.INFO: [HubSpot Journal Polling] Getting offset from database {"offset":"","jiminny_team_id":1} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:15] local.INFO: [HubSpot Journal API] Fetching latest journal entry {"url":"https://api.hubapi.com/webhooks/v4/journal/latest"} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] No data {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.WARNING: [HubSpot Journal Polling] Maximum empty results reached, stopping {"empty_results":5,"max_empty_results":5} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Service ending {"runtime_seconds":57,"total_cycles":5,"files_downloaded":0,"empty_files":0,"other_portal_skipped":0,"total_events":0,"events_per_file":0,"avg_api_ms":240.0,"avg_download_ms":0.0,"avg_transform_ms":0.0,"avg_process_ms":0.0,"peak_memory_mb":99.72} {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
[2026-04-20 09:21:16] local.INFO: [HubSpot Journal Polling] Released polling lock {"correlation_id":"1cdd5447-8247-4350-b52a-735301ae8dac","trace_id":"01e226d2-bbac-4cf8-85c1-e9366903c55a"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
54866
|
|
56965
|
1228
|
78
|
2026-04-20T11:35:53.488329+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776684953488_m2.jpg...
|
Firefox
|
Firefox
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxcalVIewHistorybookmarksProtllesToolsWindowm FirefoxcalVIewHistorybookmarksProtllesToolsWindowmelp000.• • app.dev.jiminny.com/ai-reports/manageBookmarksAsk Jiminny ReportsJy 19798 evaluation for ai activityQ Search bookmarksQ Report nameJY-20553 | Improve crm-sync dela|SRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated rep/v x bookmarks loolbaSprint Board# SRD QueueGithub8 Jiminny DEVAsk Jiminny Reports by nikolay-yankov •..Circle Cl& PROD US8 Stagingss Sentry> E Bookmarks MenuOClear allNAME *DasdaExpSMonthly Ask J ReportAsk Jiminny Reports by nikolay-ya… Other BookmarksSearch One- New Tabu Product Growth Plattorm UserpilgU Userpilot I Loaaed-activityfix(security): composer dependerPipelines - jiminny/app) Feed - jiminny - Sentry8 Jiminnytuy-206921 Issue with reconnectinJy-20692 change confirmation par(JY-20692] Issue with reconnect[SRD-6787) Issue with reconnecti& Jiminny MCP Connector - Product-7 [JY-206761 Notify the user if a PaiProject Phoenix - Figma© Pipelines - jiminny/app0) liminnv - Circlec- New Tab100% C2Mon 20 Apr 14:35:53All statusesSHAREDACTIONSEditInspector* Console D Debugger T/ Network [) Style Editor() PerformanceFilter URLSO: Memory1r Accessibiliti888 ApplicationStatus500200200200200200500500GETGETPOSTPOSTGETapp.dev.jiminny.comAapp.dev.jiminny.comapp.dev.jiminny.comAapp.dev.jiminny.comapp.dev.jiminny.comAapp.dev.jiminny.comapi-iam.intercom.icAapp.dev.jiminny.comapp.dev.liminny.comE StorageFileaj-reportssearch?status[j=completed&sort_by=dateHeld&sort_direction=desc&exclude/xhrrecentintegrationauthenticatexhrsearch?status {)=completed&sort_by=dateHeld&sort_direction=desc&excludef xhrsearch?statusll=completed&sort_by=dateHeld&sort_direction=desc&excludefxhrTурeTr Size•Disable CacheNo Throttling11.30 kB323 ms315 ms1.04 kB6.50 KB 665 ms96 B239 ms231 B | 208 ms11.30 kB242 mr11.30 kB|239 msFREQUENCY +WeeklyWeeklyMonthlyDailyWeeklyEXPIRING20/04/202720/04/202730/06/202630/04/202621/04/2026 9 requests45.06 KB / 58.35 kB transferred Finish: 4.19 s DOMContentLoaded: 41 ms ] load: 1.11 :...
|
NULL
|
9109029891721556643
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxcalVIewHistorybookmarksProtllesToolsWindowm FirefoxcalVIewHistorybookmarksProtllesToolsWindowmelp000.• • app.dev.jiminny.com/ai-reports/manageBookmarksAsk Jiminny ReportsJy 19798 evaluation for ai activityQ Search bookmarksQ Report nameJY-20553 | Improve crm-sync dela|SRD-6793) Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated rep/v x bookmarks loolbaSprint Board# SRD QueueGithub8 Jiminny DEVAsk Jiminny Reports by nikolay-yankov •..Circle Cl& PROD US8 Stagingss Sentry> E Bookmarks MenuOClear allNAME *DasdaExpSMonthly Ask J ReportAsk Jiminny Reports by nikolay-ya… Other BookmarksSearch One- New Tabu Product Growth Plattorm UserpilgU Userpilot I Loaaed-activityfix(security): composer dependerPipelines - jiminny/app) Feed - jiminny - Sentry8 Jiminnytuy-206921 Issue with reconnectinJy-20692 change confirmation par(JY-20692] Issue with reconnect[SRD-6787) Issue with reconnecti& Jiminny MCP Connector - Product-7 [JY-206761 Notify the user if a PaiProject Phoenix - Figma© Pipelines - jiminny/app0) liminnv - Circlec- New Tab100% C2Mon 20 Apr 14:35:53All statusesSHAREDACTIONSEditInspector* Console D Debugger T/ Network [) Style Editor() PerformanceFilter URLSO: Memory1r Accessibiliti888 ApplicationStatus500200200200200200500500GETGETPOSTPOSTGETapp.dev.jiminny.comAapp.dev.jiminny.comapp.dev.jiminny.comAapp.dev.jiminny.comapp.dev.jiminny.comAapp.dev.jiminny.comapi-iam.intercom.icAapp.dev.jiminny.comapp.dev.liminny.comE StorageFileaj-reportssearch?status[j=completed&sort_by=dateHeld&sort_direction=desc&exclude/xhrrecentintegrationauthenticatexhrsearch?status {)=completed&sort_by=dateHeld&sort_direction=desc&excludef xhrsearch?statusll=completed&sort_by=dateHeld&sort_direction=desc&excludefxhrTурeTr Size•Disable CacheNo Throttling11.30 kB323 ms315 ms1.04 kB6.50 KB 665 ms96 B239 ms231 B | 208 ms11.30 kB242 mr11.30 kB|239 msFREQUENCY +WeeklyWeeklyMonthlyDailyWeeklyEXPIRING20/04/202720/04/202730/06/202630/04/202621/04/2026 9 requests45.06 KB / 58.35 kB transferred Finish: 4.19 s DOMContentLoaded: 41 ms ] load: 1.11 :...
|
NULL
|
|
27415
|
572
|
48
|
2026-04-15T13:48:32.815044+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776260912815_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeActivityFiles..•More+His +SlackFileEditViewGoEDHomeActivityFiles..•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 PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira Cloud# releases8 22Messagesnewdou+O 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...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox 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)Claude Helper (Renderer)claudeFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSUREMem...2,03 GB1,20 GB994,1 MB962,7 MB836,2 MB793,5 MB783,5 MB554,1 MB547,3 MB543,8 MB516,0 MB464,7 MB452,2 MB445,2 MB426,1 MB393,6 MB391,5 MB389,9 MB372,5 MB346,6 MB327,4 MB327,0 MB326,1 MB299,7 MB252,0 MB244,7 MB244,5 MB227,4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 16:48:32CPUMemoryDiskThreads39237426842829242611241523262725242315201513277272659EnergyPorts60719 7557251261 20120 019130241126251166121185122125126125122121174315220721241 834127123522PID93892407801442974146648424203080193671314673938993548041863352763583143652430163689848173265481148605195091035833487848298561384287616,00 GB14,18 GB <1,75 GB2,90 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,68 GB2,86 GB7,08 GB...
|
NULL
|
9108315630859835216
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeActivityFiles..•More+His +SlackFileEditViewGoEDHomeActivityFiles..•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 PetrovaD. Nikolay Nikolov2 Galya Dimitrova, Ni...ii: AppsToastJira Cloud# releases8 22Messagesnewdou+O 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...Activity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox 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)Claude Helper (Renderer)claudeFirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentscreenpipeMEMORY PRESSUREMem...2,03 GB1,20 GB994,1 MB962,7 MB836,2 MB793,5 MB783,5 MB554,1 MB547,3 MB543,8 MB516,0 MB464,7 MB452,2 MB445,2 MB426,1 MB393,6 MB391,5 MB389,9 MB372,5 MB346,6 MB327,4 MB327,0 MB326,1 MB299,7 MB252,0 MB244,7 MB244,5 MB227,4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 16:48:32CPUMemoryDiskThreads39237426842829242611241523262725242315201513277272659EnergyPorts60719 7557251261 20120 019130241126251166121185122125126125122121174315220721241 834127123522PID93892407801442974146648424203080193671314673938993548041863352763583143652430163689848173265481148605195091035833487848298561384287616,00 GB14,18 GB <1,75 GB2,90 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,68 GB2,86 GB7,08 GB...
|
27413
|
|
35832
|
729
|
49
|
2026-04-16T10:10:15.044849+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334215044_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileEditViewHistoryWindowHelpQ Search Jiminny SackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminny-x-integration-appDMs= Unreads@ Threads6 HuddlesDrafts & sent8 Directories• Messagest Add canvasC Files& PinsBookmarksAchivityEh External connectionsFilesMore# Starred8 jiminny-x-integrati...A platform-inner-team# Channels# ai-chapter# alerts# backends contlicion-clinia# 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 Cloud8 186д+E 7 replies Last reply 9 months agcJune 3rd, 2025 ~Lukas Kovalik 4:38 PMWe have a couple of issues that need attention. I also include the pipeline - stage issue for visibilityLukas Kovalik 4:38 PM1. There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we nolonger receive a Promise ([URL_WITH_CREDENTIALS] console [STAGING]V connect.vue xV Onboard.vueA HS_local [jiminny@localhost]V1ЛVionAppOnClick() {s.crul oken.CascadeIntegration 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).tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,alaealttelatels eins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."667165'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));16T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}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",unuotlonkey":eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseThe 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-3on &ô connection.connected === true) {ction &ã connection. disconnected === false) {Now 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 → resnevertred• 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.6veRequest = await axios.post(ID provider_refresh_token TSmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...SHULLeLiTo ulonKcorMooLnUSuTNoyuoU4eyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
9108106591623766902
|
NULL
|
visual_change
|
ocr
|
NULL
|
SackFileEditViewHistoryWindowHelpQ Search Jiminny SackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminny-x-integration-appDMs= Unreads@ Threads6 HuddlesDrafts & sent8 Directories• Messagest Add canvasC Files& PinsBookmarksAchivityEh External connectionsFilesMore# Starred8 jiminny-x-integrati...A platform-inner-team# Channels# ai-chapter# alerts# backends contlicion-clinia# 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 Cloud8 186д+E 7 replies Last reply 9 months agcJune 3rd, 2025 ~Lukas Kovalik 4:38 PMWe have a couple of issues that need attention. I also include the pipeline - stage issue for visibilityLukas Kovalik 4:38 PM1. There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we nolonger receive a Promise ([URL_WITH_CREDENTIALS] console [STAGING]V connect.vue xV Onboard.vueA HS_local [jiminny@localhost]V1ЛVionAppOnClick() {s.crul oken.CascadeIntegration 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).tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,alaealttelatels eins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."667165'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));16T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}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",unuotlonkey":eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseThe 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-3on &ô connection.connected === true) {ction &ã connection. disconnected === false) {Now 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 → resnevertred• 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.6veRequest = await axios.post(ID provider_refresh_token TSmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...SHULLeLiTo ulonKcorMooLnUSuTNoyuoU4eyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
35831
|
|
17569
|
379
|
29
|
2026-04-14T15:52:36.283444+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776181956283_m2.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
1751002004/5Dark AgeClick a villager to gather foo 1751002004/5Dark AgeClick a villager to gather food from thisanimal.Cowkovalfklukas (Britons)15014/146 Mindaugas: 190/1902 Anccu Hualloc: 183/1838 Ashikaga Takauji: 180/1804 Siddhraj Jaisingh: 177/1773 Bird Jaguar: 173/1737 Basil the Macedonian: 170/1705 Honorius: 170/1701 kovaliklukas: 165/165...
|
NULL
|
9107682925664141553
|
NULL
|
click
|
ocr
|
NULL
|
1751002004/5Dark AgeClick a villager to gather foo 1751002004/5Dark AgeClick a villager to gather food from thisanimal.Cowkovalfklukas (Britons)15014/146 Mindaugas: 190/1902 Anccu Hualloc: 183/1838 Ashikaga Takauji: 180/1804 Siddhraj Jaisingh: 177/1773 Bird Jaguar: 173/1737 Basil the Macedonian: 170/1705 Honorius: 170/1701 kovaliklukas: 165/165...
|
NULL
|
|
67214
|
1512
|
89
|
2026-04-21T15:29:23.949987+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776785363949_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/dashboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Engineering - Confluence
Edit - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874667
28
28
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Nikolay Yankov at Jiminny (EU)
12 Feb, 10:22 AM
Nikolay Yankov at Jiminny (EU)
12 Feb, 10:13 AM
Nikolay Yankov at Jiminny (EU)
12 Feb, 9:43 AM
Unknown Customer
Notetaker added by Nikolay Yankov
26 Jan, 11:31 AM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:26 PM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:07 PM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:04 PM
Unknown Customer
Notetaker added on 12-19-23 @ 10:04
19 Dec, 2023, 11:03 AM
Bob Arsenault at Planet
Notetaker added on 11-16-23 @ 17:14
Cold
16 Nov, 2023, 6:11 PM
Schedule
Schedule
Invite Notetaker
This Week
This Week
Team Schedule
Team Schedule
No Meetings
Trending this month
Trending this month
Live Feed
Live Feed
Veselin Kulov
listened to call
8 Apr, 12:51 AM
activity
with
unknown customer
Held:
8 Apr, 12:36 AM
Duration:
7m
Value:
$0
Nikolay Nikolov
listened to call
27 Feb, 4:38 PM
Web Demo
with
Martin Petkov
Held:
13 Feb, 2:15 PM
Duration:
11m
Value:
$1
Martin Petkov
listened to call
22 Jan, 1:30 PM
Discovery
with
Martin Petkov
Held:
21 Jan, 4:00 PM
Duration:
35m
Value:
$2
Martin Petkov
listened to call
20 Jan, 11:42 AM
activity
with
Jonathan Heaton
Held:
25 Sep, 2024, 1:33 PM
Duration:
37m
Value:
£8,886
Galya Dimitrova
listened to call
26 Nov, 2025, 1:29 PM
activity
with
David Ehrlich
Held:
9 Oct, 2024, 3:31 PM
Duration:
39m
Value:
$23,000
Aneliya Angelova
listened to call
18 Aug, 2025, 8:45 PM
Cold call
with
Robinson Crusoe New 13333
Held:
23 Jul, 2025, 5:43 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
23 Jul, 2025, 5:48 PM
Cold call
with
Robinson Crusoe New 13333
Held:
23 Jul, 2025, 5:43 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
23 Jul, 2025, 5:32 PM
activity
with
Reward Gateway
Held:
19 Sep, 2024, 4:00 PM
Duration:
52m
Value:
$0
Jiminny Web SA
shared in Slack
17 Jul, 2025, 1:32 PM
activity
with
Robinson Crusoe New 13333
Held:
17 Jul, 2025, 1:28 PM
Duration:
10s
Value:
$5
Jiminny Web SA
shared in Slack
17 Jul, 2025, 1:29 PM
activity
with
Storyclash GmbH
Held:
6 Jun, 2024, 11:00 AM
Duration:
37m
Value:
$4,725
Jiminny Web SA
shared in Slack
16 Jul, 2025, 9:25 AM
activity
with
Robinson Crusoe New 13333
Held:
16 Jul, 2025, 9:21 AM
Duration:
37s
Value:
$5
Veselin Kulov
listened to call
11 Jul, 2025, 9:53 AM
Discovery
with
Drun Drun Chiki Chiki Bam Bam
Held:
2 Jul, 2025, 5:08 PM
Duration:
30m
Value:
$0
Veselin Kulov
listened to call
11 Jul, 2025, 9:46 AM
Discovery
with
Drun Drun Chiki Chiki Bam Bam
Held:
2 Jul, 2025, 5:08 PM
Duration:
30m
Value:
$0
Jiminny Web SA
shared in Slack
9 Jul, 2025, 12:11 PM
activity
with
Robinson Crusoe New 13333
Held:
9 Jul, 2025, 12:08 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
7 Jul, 2025, 3:34 PM
activity
with
Robinson Crusoe New 13333
Held:
7 Jul, 2025, 3:31 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
6 Jul, 2025, 6:14 PM
activity
with
Robinson Crusoe New 13333
Held:
6 Jul, 2025, 6:10 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 5:23 PM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 5:19 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 12:52 PM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 12:49 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 10:39 AM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 10:35 AM
Duration:...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.11319814,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.016788565,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.48762968,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.49880287,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Search results: calendar | Jiminny Help Center","depth":4,"bounds":{"left":0.0,"top":0.5203512,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Search results: calendar | Jiminny Help Center","depth":5,"bounds":{"left":0.013297873,"top":0.53152436,"width":0.080119684,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.55307263,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5642458,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.5857941,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.5969673,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.59297687,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Edit - Engineering - Confluence","depth":4,"bounds":{"left":0.0,"top":0.61851555,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit - Engineering - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.62968874,"width":0.054853722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.6528332,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"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.036070477,"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.04720745,"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":"JY-18909-automated-reports-ask-jiminny ■ 874667","depth":9,"bounds":{"left":0.08028591,"top":0.9860335,"width":0.10056516,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"28","depth":12,"bounds":{"left":0.08228058,"top":0.91380686,"width":0.015957447,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"28","depth":14,"bounds":{"left":0.09059176,"top":0.9173983,"width":0.004654255,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"My Recordings","depth":14,"bounds":{"left":0.12915559,"top":0.07182761,"width":0.04255319,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"My Recordings","depth":15,"bounds":{"left":0.13314494,"top":0.0905826,"width":0.034574468,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Team Recordings","depth":14,"bounds":{"left":0.17170878,"top":0.07182761,"width":0.04737367,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Team Recordings","depth":15,"bounds":{"left":0.17569813,"top":0.0905826,"width":0.03939495,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Everyone's Recordings","depth":14,"bounds":{"left":0.21908244,"top":0.07182761,"width":0.06017287,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Everyone's Recordings","depth":15,"bounds":{"left":0.22307181,"top":0.0905826,"width":0.05219415,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Yankov at Jiminny (EU)","depth":17,"bounds":{"left":0.14079122,"top":0.14604948,"width":0.06382979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12 Feb, 10:22 AM","depth":17,"bounds":{"left":0.14079122,"top":0.16679968,"width":0.03673537,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Yankov at Jiminny (EU)","depth":17,"bounds":{"left":0.14079122,"top":0.21548285,"width":0.06382979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12 Feb, 10:13 AM","depth":17,"bounds":{"left":0.14079122,"top":0.23623304,"width":0.03673537,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Yankov at Jiminny (EU)","depth":17,"bounds":{"left":0.14079122,"top":0.2849162,"width":0.06382979,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"12 Feb, 9:43 AM","depth":17,"bounds":{"left":0.14079122,"top":0.3056664,"width":0.033909574,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"bounds":{"left":0.14079122,"top":0.35434955,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added by Nikolay Yankov","depth":18,"bounds":{"left":0.14079122,"top":0.37509975,"width":0.073803194,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26 Jan, 11:31 AM","depth":17,"bounds":{"left":0.14079122,"top":0.39584997,"width":0.036236703,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"bounds":{"left":0.14079122,"top":0.4445331,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added by Nikolay Yankov","depth":18,"bounds":{"left":0.14079122,"top":0.46528333,"width":0.073803194,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jan, 4:26 PM","depth":17,"bounds":{"left":0.14079122,"top":0.48603353,"width":0.03307846,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"bounds":{"left":0.14079122,"top":0.53471667,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added by Nikolay Yankov","depth":18,"bounds":{"left":0.14079122,"top":0.5554669,"width":0.073803194,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jan, 4:07 PM","depth":17,"bounds":{"left":0.14079122,"top":0.57621706,"width":0.03307846,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"bounds":{"left":0.14079122,"top":0.6249002,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added by Nikolay Yankov","depth":18,"bounds":{"left":0.14079122,"top":0.64565045,"width":0.073803194,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jan, 4:04 PM","depth":17,"bounds":{"left":0.14079122,"top":0.6664006,"width":0.03307846,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"bounds":{"left":0.14079122,"top":0.7150838,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added on 12-19-23 @ 10:04","depth":18,"bounds":{"left":0.14079122,"top":0.735834,"width":0.079953454,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19 Dec, 2023, 11:03 AM","depth":17,"bounds":{"left":0.14079122,"top":0.7565842,"width":0.050199468,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bob Arsenault at Planet","depth":17,"bounds":{"left":0.14079122,"top":0.80526733,"width":0.04920213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added on 11-16-23 @ 17:14","depth":17,"bounds":{"left":0.14079122,"top":0.82601756,"width":0.079953454,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cold","depth":17,"bounds":{"left":0.14079122,"top":0.8467678,"width":0.009807181,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Nov, 2023, 6:11 PM","depth":17,"bounds":{"left":0.14079122,"top":0.86751795,"width":0.04720745,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Schedule","depth":13,"bounds":{"left":0.30418882,"top":0.27214685,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Schedule","depth":14,"bounds":{"left":0.30418882,"top":0.27414206,"width":0.029421542,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Invite Notetaker","depth":14,"bounds":{"left":0.44664228,"top":0.2697526,"width":0.044215426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"This Week","depth":14,"bounds":{"left":0.30917552,"top":0.31763768,"width":0.08676862,"height":0.02952913},"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":17,"bounds":{"left":0.31283244,"top":0.3256185,"width":0.021775266,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Team Schedule","depth":14,"bounds":{"left":0.39926863,"top":0.31763768,"width":0.0866024,"height":0.02952913},"value":"Team Schedule","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Team Schedule","depth":17,"bounds":{"left":0.40292552,"top":0.3256185,"width":0.030751329,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Meetings","depth":16,"bounds":{"left":0.38430852,"top":0.69193935,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Trending this month","depth":13,"bounds":{"left":0.30917552,"top":0.08858739,"width":0.04637633,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trending this month","depth":14,"bounds":{"left":0.30917552,"top":0.0905826,"width":0.04637633,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Live Feed","depth":13,"bounds":{"left":0.5024933,"top":0.08858739,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Live Feed","depth":14,"bounds":{"left":0.5024933,"top":0.0905826,"width":0.021775266,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Veselin Kulov","depth":18,"bounds":{"left":0.5241024,"top":0.14086193,"width":0.02825798,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.5540226,"top":0.14086193,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8 Apr, 12:51 AM","depth":18,"bounds":{"left":0.64444816,"top":0.14046289,"width":0.03307846,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5241024,"top":0.17158818,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54072475,"top":0.17158818,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":18,"bounds":{"left":0.55069816,"top":0.17158818,"width":0.040059842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.20909816,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8 Apr, 12:36 AM","depth":18,"bounds":{"left":0.5427194,"top":0.20909816,"width":0.030751329,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.6015625,"top":0.20909816,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7m","depth":18,"bounds":{"left":0.6206782,"top":0.20909816,"width":0.006150266,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":0.20909816,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"bounds":{"left":0.6675532,"top":0.20909816,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":18,"bounds":{"left":0.5241024,"top":0.25418994,"width":0.03307846,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.5588431,"top":0.25418994,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27 Feb, 4:38 PM","depth":18,"bounds":{"left":0.64461434,"top":0.25379092,"width":0.032912236,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web Demo","depth":18,"bounds":{"left":0.5241024,"top":0.2849162,"width":0.023271276,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.548371,"top":0.2849162,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Martin Petkov","depth":18,"bounds":{"left":0.5583444,"top":0.2849162,"width":0.029920213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.32242617,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13 Feb, 2:15 PM","depth":18,"bounds":{"left":0.5427194,"top":0.32242617,"width":0.030751329,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.6002327,"top":0.32242617,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11m","depth":18,"bounds":{"left":0.6193484,"top":0.32242617,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":0.32242617,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$1","depth":18,"bounds":{"left":0.6675532,"top":0.32242617,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Martin Petkov","depth":18,"bounds":{"left":0.5241024,"top":0.36751795,"width":0.029920213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.55568486,"top":0.36751795,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22 Jan, 1:30 PM","depth":18,"bounds":{"left":0.64511305,"top":0.36711892,"width":0.032413565,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discovery","depth":18,"bounds":{"left":0.5241024,"top":0.3982442,"width":0.020777926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54587764,"top":0.3982442,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Martin Petkov","depth":18,"bounds":{"left":0.55585104,"top":0.3982442,"width":0.029920213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.43575418,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"21 Jan, 4:00 PM","depth":18,"bounds":{"left":0.5427194,"top":0.43575418,"width":0.03025266,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.59990025,"top":0.43575418,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"35m","depth":18,"bounds":{"left":0.61918217,"top":0.43575418,"width":0.008477394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":0.43575418,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$2","depth":18,"bounds":{"left":0.6675532,"top":0.43575418,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Martin Petkov","depth":18,"bounds":{"left":0.5241024,"top":0.48084596,"width":0.029920213,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.55568486,"top":0.48084596,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Jan, 11:42 AM","depth":18,"bounds":{"left":0.6419548,"top":0.48044693,"width":0.03557181,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5241024,"top":0.51157224,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54072475,"top":0.51157224,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jonathan Heaton","depth":18,"bounds":{"left":0.55069816,"top":0.51157224,"width":0.035738032,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.5490822,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"25 Sep, 2024, 1:33 PM","depth":18,"bounds":{"left":0.5427194,"top":0.5490822,"width":0.042386968,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.601895,"top":0.5490822,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"37m","depth":18,"bounds":{"left":0.62101066,"top":0.5490822,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.6462766,"top":0.5490822,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"£8,886","depth":18,"bounds":{"left":0.6590758,"top":0.5490822,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":18,"bounds":{"left":0.5241024,"top":0.59417397,"width":0.034075797,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.55984044,"top":0.59417397,"width":0.029089095,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"26 Nov, 2025, 1:29 PM","depth":18,"bounds":{"left":0.6313165,"top":0.5937749,"width":0.046210106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5241024,"top":0.6249002,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54072475,"top":0.6249002,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"David Ehrlich","depth":18,"bounds":{"left":0.55069816,"top":0.6249002,"width":0.027759308,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.6624102,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Oct, 2024, 3:31 PM","depth":18,"bounds":{"left":0.5427194,"top":0.6624102,"width":0.040059842,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.5994016,"top":0.6624102,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"39m","depth":18,"bounds":{"left":0.6186835,"top":0.6624102,"width":0.008477394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.6437833,"top":0.6624102,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$23,000","depth":18,"bounds":{"left":0.6565825,"top":0.6624102,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":18,"bounds":{"left":0.5241024,"top":0.707502,"width":0.036402926,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"bounds":{"left":0.5621675,"top":0.707502,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18 Aug, 2025, 8:45 PM","depth":18,"bounds":{"left":0.6313165,"top":0.70710295,"width":0.046210106,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cold call","depth":18,"bounds":{"left":0.5241024,"top":0.73822826,"width":0.017785905,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.5427194,"top":0.73822826,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"bounds":{"left":0.55269283,"top":0.73822826,"width":0.060339097,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.77573824,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jul, 2025, 5:43 PM","depth":18,"bounds":{"left":0.5427194,"top":0.77573824,"width":0.04089096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.6065492,"top":0.77573824,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"bounds":{"left":0.6258311,"top":0.77573824,"width":0.005984043,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":0.77573824,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"bounds":{"left":0.6675532,"top":0.77573824,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"bounds":{"left":0.5241024,"top":0.82083,"width":0.03374335,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"bounds":{"left":0.55950797,"top":0.82083,"width":0.030086435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jul, 2025, 5:48 PM","depth":18,"bounds":{"left":0.6334774,"top":0.820431,"width":0.044049203,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Cold call","depth":18,"bounds":{"left":0.5241024,"top":0.85155624,"width":0.017785905,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.5427194,"top":0.85155624,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"bounds":{"left":0.55269283,"top":0.85155624,"width":0.060339097,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":0.8890662,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jul, 2025, 5:43 PM","depth":18,"bounds":{"left":0.5427194,"top":0.8890662,"width":0.04089096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.6065492,"top":0.8890662,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"bounds":{"left":0.6258311,"top":0.8890662,"width":0.005984043,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":0.8890662,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"bounds":{"left":0.6675532,"top":0.8890662,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"bounds":{"left":0.5241024,"top":0.934158,"width":0.03374335,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"bounds":{"left":0.55950797,"top":0.934158,"width":0.030086435,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"23 Jul, 2025, 5:32 PM","depth":18,"bounds":{"left":0.6334774,"top":0.933759,"width":0.044049203,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5241024,"top":0.9648843,"width":0.015791224,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54072475,"top":0.9648843,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Reward Gateway","depth":18,"bounds":{"left":0.55069816,"top":0.9648843,"width":0.035738032,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"bounds":{"left":0.53174865,"top":1.0,"width":0.010305851,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19 Sep, 2024, 4:00 PM","depth":18,"bounds":{"left":0.5427194,"top":1.0,"width":0.042386968,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"bounds":{"left":0.60605055,"top":1.0,"width":0.01861702,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"52m","depth":18,"bounds":{"left":0.6253325,"top":1.0,"width":0.008477394,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"bounds":{"left":0.654754,"top":1.0,"width":0.012134309,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"bounds":{"left":0.6675532,"top":1.0,"width":0.004986702,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"bounds":{"left":0.5241024,"top":1.0,"width":0.03374335,"height":-0.047486067},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"bounds":{"left":0.55950797,"top":1.0,"width":0.030086435,"height":-0.047486067},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Jul, 2025, 1:32 PM","depth":18,"bounds":{"left":0.6334774,"top":1.0,"width":0.044049203,"height":-0.047086954},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"bounds":{"left":0.5241024,"top":1.0,"width":0.015791224,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"bounds":{"left":0.54072475,"top":1.0,"width":0.009142287,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"bounds":{"left":0.55069816,"top":1.0,"width":0.060339097,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Jul, 2025, 1:28 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10s","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Jul, 2025, 1:29 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Storyclash GmbH","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6 Jun, 2024, 11:00 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"37m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$4,725","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Jul, 2025, 9:25 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Jul, 2025, 9:21 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"37s","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Veselin Kulov","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11 Jul, 2025, 9:53 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discovery","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Drun Drun Chiki Chiki Bam Bam","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 Jul, 2025, 5:08 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Veselin Kulov","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11 Jul, 2025, 9:46 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discovery","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Drun Drun Chiki Chiki Bam Bam","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2 Jul, 2025, 5:08 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Jul, 2025, 12:11 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Jul, 2025, 12:08 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 Jul, 2025, 3:34 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 Jul, 2025, 3:31 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6 Jul, 2025, 6:14 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6 Jul, 2025, 6:10 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 5:23 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 5:19 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 12:52 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 12:49 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$5","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jiminny Web SA","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"shared in Slack","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 10:39 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Robinson Crusoe New 13333","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4 Jul, 2025, 10:35 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9107214353407840747
|
-5858995114996077549
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
Project Phoenix – Figma
Project Phoenix – Figma
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
Search results: calendar | Jiminny Help Center
Search results: calendar | Jiminny Help Center
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
Edit - Engineering - Confluence
Edit - Engineering - Confluence
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 874667
28
28
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Nikolay Yankov at Jiminny (EU)
12 Feb, 10:22 AM
Nikolay Yankov at Jiminny (EU)
12 Feb, 10:13 AM
Nikolay Yankov at Jiminny (EU)
12 Feb, 9:43 AM
Unknown Customer
Notetaker added by Nikolay Yankov
26 Jan, 11:31 AM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:26 PM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:07 PM
Unknown Customer
Notetaker added by Nikolay Yankov
23 Jan, 4:04 PM
Unknown Customer
Notetaker added on 12-19-23 @ 10:04
19 Dec, 2023, 11:03 AM
Bob Arsenault at Planet
Notetaker added on 11-16-23 @ 17:14
Cold
16 Nov, 2023, 6:11 PM
Schedule
Schedule
Invite Notetaker
This Week
This Week
Team Schedule
Team Schedule
No Meetings
Trending this month
Trending this month
Live Feed
Live Feed
Veselin Kulov
listened to call
8 Apr, 12:51 AM
activity
with
unknown customer
Held:
8 Apr, 12:36 AM
Duration:
7m
Value:
$0
Nikolay Nikolov
listened to call
27 Feb, 4:38 PM
Web Demo
with
Martin Petkov
Held:
13 Feb, 2:15 PM
Duration:
11m
Value:
$1
Martin Petkov
listened to call
22 Jan, 1:30 PM
Discovery
with
Martin Petkov
Held:
21 Jan, 4:00 PM
Duration:
35m
Value:
$2
Martin Petkov
listened to call
20 Jan, 11:42 AM
activity
with
Jonathan Heaton
Held:
25 Sep, 2024, 1:33 PM
Duration:
37m
Value:
£8,886
Galya Dimitrova
listened to call
26 Nov, 2025, 1:29 PM
activity
with
David Ehrlich
Held:
9 Oct, 2024, 3:31 PM
Duration:
39m
Value:
$23,000
Aneliya Angelova
listened to call
18 Aug, 2025, 8:45 PM
Cold call
with
Robinson Crusoe New 13333
Held:
23 Jul, 2025, 5:43 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
23 Jul, 2025, 5:48 PM
Cold call
with
Robinson Crusoe New 13333
Held:
23 Jul, 2025, 5:43 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
23 Jul, 2025, 5:32 PM
activity
with
Reward Gateway
Held:
19 Sep, 2024, 4:00 PM
Duration:
52m
Value:
$0
Jiminny Web SA
shared in Slack
17 Jul, 2025, 1:32 PM
activity
with
Robinson Crusoe New 13333
Held:
17 Jul, 2025, 1:28 PM
Duration:
10s
Value:
$5
Jiminny Web SA
shared in Slack
17 Jul, 2025, 1:29 PM
activity
with
Storyclash GmbH
Held:
6 Jun, 2024, 11:00 AM
Duration:
37m
Value:
$4,725
Jiminny Web SA
shared in Slack
16 Jul, 2025, 9:25 AM
activity
with
Robinson Crusoe New 13333
Held:
16 Jul, 2025, 9:21 AM
Duration:
37s
Value:
$5
Veselin Kulov
listened to call
11 Jul, 2025, 9:53 AM
Discovery
with
Drun Drun Chiki Chiki Bam Bam
Held:
2 Jul, 2025, 5:08 PM
Duration:
30m
Value:
$0
Veselin Kulov
listened to call
11 Jul, 2025, 9:46 AM
Discovery
with
Drun Drun Chiki Chiki Bam Bam
Held:
2 Jul, 2025, 5:08 PM
Duration:
30m
Value:
$0
Jiminny Web SA
shared in Slack
9 Jul, 2025, 12:11 PM
activity
with
Robinson Crusoe New 13333
Held:
9 Jul, 2025, 12:08 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
7 Jul, 2025, 3:34 PM
activity
with
Robinson Crusoe New 13333
Held:
7 Jul, 2025, 3:31 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
6 Jul, 2025, 6:14 PM
activity
with
Robinson Crusoe New 13333
Held:
6 Jul, 2025, 6:10 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 5:23 PM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 5:19 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 12:52 PM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 12:49 PM
Duration:
2m
Value:
$5
Jiminny Web SA
shared in Slack
4 Jul, 2025, 10:39 AM
activity
with
Robinson Crusoe New 13333
Held:
4 Jul, 2025, 10:35 AM
Duration:...
|
NULL
|
|
31040
|
625
|
93
|
2026-04-15T15:17:48.978443+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776266268978_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHomeDMsActivityFilesLater..•Mo +FirefoxFileEditViewHomeDMsActivityFilesLater..•More+HistoryBookmarksProfilesToolsWindowHelp→Search Jiminny IncJiminny ...+CHISHICCHIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...• Direct messagesGo Vasil VasilevAneliya Angelova, ...Stoyan TanevVes. Galya Dimitrova&. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay NikolovAppsVasil Vasilev6 0MessagesAdd canvasO FilesMore ~+за stage ce заYesterday~е е лошо дадобавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable objectToday ~NewVasil Vasilev 5:56 PMЛукаш, привет• Saved for later • Due in 15 hoursутре ако имаш време, хвърли моля те еднооко на тоя PR:https://github.com/jiminny/app/pull/11879почиства стари stale crm обекти, койтомачваме в локалната базапринципа на работа е: ако обект не еъпдейтван 6 месеца, но го мачнем по мейл,или телефон, пробваме да направим единsink, за да видим дали все още съществува вCRM-aв момента таргетира leads основнослед това ще пусна един ПР, дето почистваи tasks / events, че и там имаме стариасоциации, дето от време на време гьрмятJira Cloud1Message Vasil VasilevToast+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperSlack Helper (Renderer)VTDecoderXPCServiceFirefoxCP 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 ContentFirefoxCP Isolated Web ContentiTerm2screenpipeFirefoxCP Isolated Web ContentMEMORY PRESSURERMem...2,05 GB1,22 GB1,01 GB963,1 MB863,7 MB795,8 MB780,3 MB560,2 MB551,9 MB543,9 MB523,1 MB515,8 MB502,3 MB440,9 MB422,6 MB400,3 MB399,3 MB394,6 MB372,6 MB346,5 MB327,0 MB326,3 MB326,3 MB314,9 MB279,8 MB275,9 MB256,3 MB240.4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:17:48CPUMemoryDiskThreads39237526852829242715112424262426272315201315272876026EnergyPorts59619 8447301251 20220 063128241125254186166121122124121126125120172314722191231281 835523122PID93892407801442974146648424203080193671314673418639389935480352763583136898430164365248173265481148509106051935833482984878428765613816,00 GB14,19 GB <1,76 GB3,48 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,02 GB2,95 GB6,67 GB...
|
NULL
|
9107110359100898253
|
NULL
|
click
|
ocr
|
NULL
|
+FirefoxFileEditViewHomeDMsActivityFilesLater..•Mo +FirefoxFileEditViewHomeDMsActivityFilesLater..•More+HistoryBookmarksProfilesToolsWindowHelp→Search Jiminny IncJiminny ...+CHISHICCHIS# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...• Direct messagesGo Vasil VasilevAneliya Angelova, ...Stoyan TanevVes. Galya Dimitrova&. Steliyan GeorgievAdelina Petrova, Ili...P. Adelina PetrovaD. Nikolay NikolovAppsVasil Vasilev6 0MessagesAdd canvasO FilesMore ~+за stage ce заYesterday~е е лошо дадобавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable objectToday ~NewVasil Vasilev 5:56 PMЛукаш, привет• Saved for later • Due in 15 hoursутре ако имаш време, хвърли моля те еднооко на тоя PR:https://github.com/jiminny/app/pull/11879почиства стари stale crm обекти, койтомачваме в локалната базапринципа на работа е: ако обект не еъпдейтван 6 месеца, но го мачнем по мейл,или телефон, пробваме да направим единsink, за да видим дали все още съществува вCRM-aв момента таргетира leads основнослед това ще пусна един ПР, дето почистваи tasks / events, че и там имаме стариасоциации, дето от време на време гьрмятJira Cloud1Message Vasil VasilevToast+AaActivity MonitorAll ProcessesProcess NameBoosteroidWindowServerFirefoxFirefoxCP Isolated Web ContentFirefoxCursorUlViewService (Not Responding)FirefoxCP Isolated Web ContentFirefox GPU HelperFirefoxCP Isolated Web ContentFirefox GPU HelperSlack Helper (Renderer)VTDecoderXPCServiceFirefoxCP 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 ContentFirefoxCP Isolated Web ContentiTerm2screenpipeFirefoxCP Isolated Web ContentMEMORY PRESSURERMem...2,05 GB1,22 GB1,01 GB963,1 MB863,7 MB795,8 MB780,3 MB560,2 MB551,9 MB543,9 MB523,1 MB515,8 MB502,3 MB440,9 MB422,6 MB400,3 MB399,3 MB394,6 MB372,6 MB346,5 MB327,0 MB326,3 MB326,3 MB314,9 MB279,8 MB275,9 MB256,3 MB240.4 MBPhysical Memory:Memory Used:Cached Files:Swap Used:100% <478Wed 15 Apr 18:17:48CPUMemoryDiskThreads39237526852829242715112424262426272315201315272876026EnergyPorts59619 8447301251 20220 063128241125254186166121122124121126125120172314722191231281 835523122PID93892407801442974146648424203080193671314673418639389935480352763583136898430164365248173265481148509106051935833482984878428765613816,00 GB14,19 GB <1,76 GB3,48 GBApp Memory:Wired Memory:Compressed:NetworkUserlukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas4,02 GB2,95 GB6,67 GB...
|
31038
|
|
58021
|
1246
|
30
|
2026-04-20T12:20:43.709834+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776687643709_m1.jpg...
|
PhpStorm
|
PhpStorm
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr |15:20:43Nikolay Nikolov (Presenting, annotating)+2 (JY-20615) Nosty theZ (JY-20613) Alow Owne(uY-20500) Batch inito X2 (JY-20501) Batch initi X |6 59:26 min - Refinemesny.atlassian.net/browse/JY-206137at/OriginseyJpljoiMDUzM2ZjZ/Q1MzU5NGIzNjaZTM4Nzk0ZTQ-4YmRmMGMILCJwijolamlyyS1zbGFjay1pbnQifQC TO0оl Deoud cro syneL Kennel sety Ots D tern D Achpter o Home88Q SearchSoacesJiminny New) /C Add parent/ A J-20613Allow owner's role to be selected when setting up a trialDescription |Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny. This is because they don't want to be a recorder.Currently when a trial is created we give the Owner a Recorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialput the field bellow the Owner field• the choices should only be - Recorder, Recorder & Voice, Analyst*this opton snouon t appear when coring an organisacon• when the owner signs in, they should have the selected role + Admin permissionsSubtasksLinked work itemsActivityHistoryWork logAdd a comment..Who is working on this..?Status update….Thanks.Pro tipc press M to comment1meet.google.com is sharing your screen.2Sminny - Calendar - VDe Meet - [Puttorm) Rkev Prophe( My PRS|+ CreateAsk RovoBackdog v*X Improve StoryDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisationsPriorityFix versionsSprint8 UnassignedAssign to me& Galya Dimitrova.Q Open with VS Code|1J Create branch4 Create commitPlatformAdd optionsNoneNoneNoneNone= MediumNonePlatform Sprint 3 Q2Mon 20 Ape 15:20L Al Bookmarxs1|Nikolay YankovNikolay Nikolov2 othersNikolay Ivanov3:20 PM | [Platform] Refinement ®:Lukas Kovalik18:55...
|
NULL
|
9106923786758057771
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/cxs-eips-npt?authuser=0100% 128• Mon 20 Apr |15:20:43Nikolay Nikolov (Presenting, annotating)+2 (JY-20615) Nosty theZ (JY-20613) Alow Owne(uY-20500) Batch inito X2 (JY-20501) Batch initi X |6 59:26 min - Refinemesny.atlassian.net/browse/JY-206137at/OriginseyJpljoiMDUzM2ZjZ/Q1MzU5NGIzNjaZTM4Nzk0ZTQ-4YmRmMGMILCJwijolamlyyS1zbGFjay1pbnQifQC TO0оl Deoud cro syneL Kennel sety Ots D tern D Achpter o Home88Q SearchSoacesJiminny New) /C Add parent/ A J-20613Allow owner's role to be selected when setting up a trialDescription |Stoyan is seeing more cases where the Owner doesn't want to connect their calendar and email to Jiminny. This is because they don't want to be a recorder.Currently when a trial is created we give the Owner a Recorder role by default. In most cases he really needs to be a recorder.• allow Implementations to select the role of the owner when setting up a trialput the field bellow the Owner field• the choices should only be - Recorder, Recorder & Voice, Analyst*this opton snouon t appear when coring an organisacon• when the owner signs in, they should have the selected role + Admin permissionsSubtasksLinked work itemsActivityHistoryWork logAdd a comment..Who is working on this..?Status update….Thanks.Pro tipc press M to comment1meet.google.com is sharing your screen.2Sminny - Calendar - VDe Meet - [Puttorm) Rkev Prophe( My PRS|+ CreateAsk RovoBackdog v*X Improve StoryDetailsAssigneeReporterDevelopmentComponentsSub-ProductLabelsStory pointestimateStory PointsOrganisationsPriorityFix versionsSprint8 UnassignedAssign to me& Galya Dimitrova.Q Open with VS Code|1J Create branch4 Create commitPlatformAdd optionsNoneNoneNoneNone= MediumNonePlatform Sprint 3 Q2Mon 20 Ape 15:20L Al Bookmarxs1|Nikolay YankovNikolay Nikolov2 othersNikolay Ivanov3:20 PM | [Platform] Refinement ®:Lukas Kovalik18:55...
|
58019
|
|
19864
|
425
|
26
|
2026-04-15T08:10:52.914778+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776240652914_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 3 h 50 mlmeet.google.com/tgb-pyuf-dri?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting, annotating)3• Wed 15 Apr 11:10:525(15FleEdit88® For you© Recent#Starred8. AppsQ SpacesStarred(9 Service-DeskJiminny (Old)Jiminny (New)I IID Platform Team(ID Enterprise Stability IIID SE Kanban— More soaces= FiltersCB Dashboardseams% Customise sidebarBookmarksProfilesTabWindowHeip7 Platform SpF Project Pho X* Font Awes:• Cost | Cla xX Fix DepencX Homel• ProjectsSSH|• Home | SalesforcePlalJy-19240 / Д JY-20372~ ActivityWork logSuggest a reply...Status update…Nikolay Yankow &• PDFs in Public folder• Video in Vouhuihe• Planhat (( Define• Endpoint for "I'm interested"• Change logic for when page visibilityQSecfix - A.Pipelines-C fa(security xC fo(securit)08Dtdg© * Ciaude|3 CircleciSentry|Thanks…FE: 4 days|BE: 1.5 days (for endpoint and event to Planhat)QA: 0.5 day0 Tasks |insights & Coschin.• Dev•ux|+ CreateBacklog ~* Improve Story~ DetailsAssigneeNikolay Yankov¿ Galya DimitrovaQuick start developmentLink this work item to your codeoy inciuding keys wnen creacngbelow. Learn moreDismissDevelopment@ Open with VS CodeCreate branch4 Create commit|ComponentsPlatformAdd options8•Wed 15 Abe 11:10•Fix Depenc0D Al BookmarkslAsk RovoO SecurityMore 7Group: QueriesDEPLOYGalya DimitrovaNikolay YankovAneliya Angelova[ JY-20157Lukas Kovalik11:10 AM | [Platform] Planning | Session iz...1:10:38...
|
NULL
|
9106757039532959634
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 3 h 50 mlmeet.google.com/tgb-pyuf-dri?authuser=lukas.kovalik%40jiminny.comNikolay Yankov (Presenting, annotating)3• Wed 15 Apr 11:10:525(15FleEdit88® For you© Recent#Starred8. AppsQ SpacesStarred(9 Service-DeskJiminny (Old)Jiminny (New)I IID Platform Team(ID Enterprise Stability IIID SE Kanban— More soaces= FiltersCB Dashboardseams% Customise sidebarBookmarksProfilesTabWindowHeip7 Platform SpF Project Pho X* Font Awes:• Cost | Cla xX Fix DepencX Homel• ProjectsSSH|• Home | SalesforcePlalJy-19240 / Д JY-20372~ ActivityWork logSuggest a reply...Status update…Nikolay Yankow &• PDFs in Public folder• Video in Vouhuihe• Planhat (( Define• Endpoint for "I'm interested"• Change logic for when page visibilityQSecfix - A.Pipelines-C fa(security xC fo(securit)08Dtdg© * Ciaude|3 CircleciSentry|Thanks…FE: 4 days|BE: 1.5 days (for endpoint and event to Planhat)QA: 0.5 day0 Tasks |insights & Coschin.• Dev•ux|+ CreateBacklog ~* Improve Story~ DetailsAssigneeNikolay Yankov¿ Galya DimitrovaQuick start developmentLink this work item to your codeoy inciuding keys wnen creacngbelow. Learn moreDismissDevelopment@ Open with VS CodeCreate branch4 Create commit|ComponentsPlatformAdd options8•Wed 15 Abe 11:10•Fix Depenc0D Al BookmarkslAsk RovoO SecurityMore 7Group: QueriesDEPLOYGalya DimitrovaNikolay YankovAneliya Angelova[ JY-20157Lukas Kovalik11:10 AM | [Platform] Planning | Session iz...1:10:38...
|
19863
|
|
25981
|
552
|
68
|
2026-04-15T13:07:40.861321+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776258460861_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
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+AaSprint Review • nowActivity MonitorAll ProcessesProcess NameSprint Reviewnow • 16:00-16:30BoosteroidWindowServerFirefoxFirefoxCP 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)claudeNotion Helper (Renderer)Claude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web Content2,03 GB1,18 GB963,1 MB962,5 MB842,3 MB792,9 MB783,9 MB547,1 MB544,3 MB538,3 MB516,0 MB459,5 MB449,2 MB435,6 MB417,3 MB411,0 MB388,5 MB387,6 MB372,3 MB343,1 MB326,2 MB322,0 MB300,3 MB295,8 MB250,1 MB237,3 MB230,0 MB211,8 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:382374258425252730111624262326252422151320152827272516,00 GB14,12 GB <1,84 GB2,95 GB100%8Wed 15 Apr 16:07:40Ci Join Google Meet59719 7657271231 20120 011125128253245166199122125122124124122119172723132161261 833125127124938924078014429741466484242030367131467380199389941863354803583135276436524301636898481732654850910114860519358334878561384829874295App Memory:Wired Memory:Compressed:lukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,51 GB2,93 GB7,12 GB...
|
NULL
|
9106603967933290242
|
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+AaSprint Review • nowActivity MonitorAll ProcessesProcess NameSprint Reviewnow • 16:00-16:30BoosteroidWindowServerFirefoxFirefoxCP 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)claudeNotion Helper (Renderer)Claude Helper (Renderer)FirefoxCP Isolated Web ContentiTerm2FirefoxCP Isolated Web ContentFirefoxCP Isolated Web ContentFirefoxCP Isolated Web Content2,03 GB1,18 GB963,1 MB962,5 MB842,3 MB792,9 MB783,9 MB547,1 MB544,3 MB538,3 MB516,0 MB459,5 MB449,2 MB435,6 MB417,3 MB411,0 MB388,5 MB387,6 MB372,3 MB343,1 MB326,2 MB322,0 MB300,3 MB295,8 MB250,1 MB237,3 MB230,0 MB211,8 MBMEMORY PRESSUREPhysical Memory:Memory Used:Cached Files:Swap Used:382374258425252730111624262326252422151320152827272516,00 GB14,12 GB <1,84 GB2,95 GB100%8Wed 15 Apr 16:07:40Ci Join Google Meet59719 7657271231 20120 011125128253245166199122125122124124122119172723132161261 833125127124938924078014429741466484242030367131467380199389941863354803583135276436524301636898481732654850910114860519358334878561384829874295App Memory:Wired Memory:Compressed:lukas_windowserverlukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukaslukas3,51 GB2,93 GB7,12 GB...
|
25979
|
|
21288
|
469
|
31
|
2026-04-15T09:59:55.077774+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776247195077_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHome1DMSActivityFilesLater.. +SlackFileEditViewGoEDHome1DMSActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ... ~# curiosity_laD# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the _people_of jimi...• Direct messages. Galya DimitrovaAneliya Angelova, ...€. Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2Galya Dimitrova, Ni...2 Galya Dimitrova, Ni...::: AppsJira CloudToast# thank-yous8 39MessagesAdd canvasO Files+ngPet.Tuesday, April 7th~Claire, thank you so much for supportingme outside working hours with theRydoo addendum. I really appreciate it, asthey needed it urgently. You are a truechampion!View Recognition MomentTodayThe Loop APP 12:46 PMStoyan Tomov has received "Be Customer-Centred" eCard from Stefka Stoyanova® Stefka StoyanovaStoyan, thank you for stepping in quicklyand finding a way to export >4k activitieswith their metadata for Superside for justa few daysYou worked during Easterholidays and late nights to finish thisexport by the time promised to thecustomer Amer ALoilView Recognition MomentN5 B1 01 reply Today at 12:49 PMMessage #thank-yous+Aa...New(ahlSupport Daily - in 2h 1 m100% <478Wed 15 Apr 12:59:54159-14:~18185-zsh|86-zshO 87* Unable to a...•88-zsh870977100%NOT SETNOT SETDISABLEDcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}"reportUuid":"2461bd36-1f8c-4162-b7dd-4c03ca39bd78"',"teamId":1, "expiresAt" :"2026-0-8428-6f0ddf3e6f19"}"reportUuid": "f278e4f1-0f02-40e7-9461-6d18992c7241", "teamId" :1, "expiresAt" :"2026-0s-8428-6f0ddf3e6f19"'}'reportUuid":"d88089d5-3c70-48c1-98a4-c8b60dab6852", "teamId" :1,"expiresAt":"2026-0-8428-6f0ddf3e6f19"}["reportUuid": "802607bc-9ef1-4203-b93e-560000552a5d", "teamId" :1, "expiresAt": "2026-0-8428-6f0ddf3e6f19"}"isFirstDay0fMonth" : false, "currentMonth":4, "isQuarterlyMonth" : true}{"correlation_n_id": "e067b865-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6lay (manual override) {"reportId":"38","reportUuid":"802607bc-9ef1-4203-b93e-560000$5b-8428-6f0ddf3e6f19"}ly (manual override) {"reportId": "38", "reportUuid": "802607bc-9ef1-4203-b93e-5600005ice_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}srrelation_id":"e067b865-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465:port {"reportUuid": "802607bc-9ef1-4203-b93e-560000552a5d", "teamId" :1, "frequency" :"id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"};-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}...
|
NULL
|
9106301326870026566
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHome1DMSActivityFilesLater.. +SlackFileEditViewGoEDHome1DMSActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ... ~# curiosity_laD# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the _people_of jimi...• Direct messages. Galya DimitrovaAneliya Angelova, ...€. Vasil VasilevSteliyan GeorgievAdelina Petrova, Ili...P. Adelina Petrova0. Nikolay Nikolov2Galya Dimitrova, Ni...2 Galya Dimitrova, Ni...::: AppsJira CloudToast# thank-yous8 39MessagesAdd canvasO Files+ngPet.Tuesday, April 7th~Claire, thank you so much for supportingme outside working hours with theRydoo addendum. I really appreciate it, asthey needed it urgently. You are a truechampion!View Recognition MomentTodayThe Loop APP 12:46 PMStoyan Tomov has received "Be Customer-Centred" eCard from Stefka Stoyanova® Stefka StoyanovaStoyan, thank you for stepping in quicklyand finding a way to export >4k activitieswith their metadata for Superside for justa few daysYou worked during Easterholidays and late nights to finish thisexport by the time promised to thecustomer Amer ALoilView Recognition MomentN5 B1 01 reply Today at 12:49 PMMessage #thank-yous+Aa...New(ahlSupport Daily - in 2h 1 m100% <478Wed 15 Apr 12:59:54159-14:~18185-zsh|86-zshO 87* Unable to a...•88-zsh870977100%NOT SETNOT SETDISABLEDcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}"reportUuid":"2461bd36-1f8c-4162-b7dd-4c03ca39bd78"',"teamId":1, "expiresAt" :"2026-0-8428-6f0ddf3e6f19"}"reportUuid": "f278e4f1-0f02-40e7-9461-6d18992c7241", "teamId" :1, "expiresAt" :"2026-0s-8428-6f0ddf3e6f19"'}'reportUuid":"d88089d5-3c70-48c1-98a4-c8b60dab6852", "teamId" :1,"expiresAt":"2026-0-8428-6f0ddf3e6f19"}["reportUuid": "802607bc-9ef1-4203-b93e-560000552a5d", "teamId" :1, "expiresAt": "2026-0-8428-6f0ddf3e6f19"}"isFirstDay0fMonth" : false, "currentMonth":4, "isQuarterlyMonth" : true}{"correlation_n_id": "e067b865-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6lay (manual override) {"reportId":"38","reportUuid":"802607bc-9ef1-4203-b93e-560000$5b-8428-6f0ddf3e6f19"}ly (manual override) {"reportId": "38", "reportUuid": "802607bc-9ef1-4203-b93e-5600005ice_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}srrelation_id":"e067b865-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465:port {"reportUuid": "802607bc-9ef1-4203-b93e-560000552a5d", "teamId" :1, "frequency" :"id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"};-fcb2-43df-bfba-9e0b498ec087", "trace_id":"7b83e85f-24e6-465b-8428-6f0ddf3e6f19"}...
|
NULL
|
|
35990
|
733
|
9
|
2026-04-16T10:16:53.054801+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334613054_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
NotionFileFoitViewHistoryWindowHelpntearation-appL NotionFileFoitViewHistoryWindowHelpntearation-appL Lukas Kovalik's ..Integration-aoo"Private vsearchn HomeNotion AlInboxlLioraryNriai!Sprint=1 Stefka 1-1= deve EvaluationKnowledgee ldeasPrivateIntegration-appWork Knowledgetesting keyboardB YEAR 202619 New page' New pagePersonal Home= LOGS% Budget2 ApartmánE kouterPonulation decline ex…senorty reves• Martie Interview Preparation= Pain Tracker5 Daily Fitness Habit Tr...=1 Plans 2024PAWDailysettings ana contias*1 Medical documentsжелания= Dream= NASPerfect Day= Family treea Chausnan= Redis opportunity sync•.* MогeSupport Daily • in 1h 44 mA100% [45lThu 16 Apr 13:16:52Ax rans ate to Enalish XnSharev@Lukas Kovalik looks like Zoho indeed prevents us trom tollowing normal Tlow as we neverget an event from opened windowl created a task to work on new mechanism, we will workon it soonDaniil [7:47 PM]wLuKas rowaTor conex wecan oossov work croune unis ov oassno ne connectonstatus through our backend rather than getting it from the authentication window. It willhave its limitations, but is better than nothingStefka Stoyanova [9:02 AM]Guvs, do vou have anv tests to prevent rearessions? We have 2 trial customers whichcomplain about Zoho connection and we'll probably loose them because of it. Thisconnection contirmation was working betore and now customers are pointing it is notworking which is a hit to our reputationMy question is can we rely on integration.app thatcnanees ncrws wioe cauoent oroacrvev or we neea to nave oulr curomalee testsensure this?Danill 2:23 PM]@sterka stoyanova we do some connector testing, but not ena-to-end vauth tlowDecause it's too taky (companles nave all sorts or anti-oot protection for log ins and it isusually not worth trying to fight it).So in this case (something is changing in the auth Ul ofthe external app, we don't plan tests in the foreseeable future, unfortunatelv.If vou have anidea for how to test it automatically - let's discuss.Bohdan [3:53 PM]@Stefka Stovanova @Lukas KovalikWe just released a fallback mechanism to supportcases like Zoho abovelt should make connection setup process more reliable and preventthis problem in the tuture+::Lukas Kovalik Jun 3rd, 202/Mat 4:38 PM1. There appears to be a recent change in the SDK ©Auth mechanism. When a new clientconnecis to the platrorm usins zono, we no longer receive a Promisehitos:conso.e.integraton.aop/rer/sok/casses/intecranonAccessor.ntm.robenNewconnection) upon successtul login. Ihis functionality was working just a tew weeks ago.ealteeconsole.integration.appntecranonAccessor lniecranon AdosDk-valieDocumentation for Integration App SDK47 replies• Daniil Jun 3rd, 2025 at 4:39 PM60 cc @Bohdan - could vou check oiz?l) Bohdan Jun 3rd, 2025 at 4:42 PM0 Hi, @Lukas Kovalik!From ine code and Trom tne fer aocs i see mat lt must retumn a promiseeven if something was wrong internally it's sall an async funchonDo vou have an examole of how vou are using it.Lukas Kovallk Jun 3rd. 2025 at 4:44 PMwhen we try to login we go through the process, log in via google.CleanShot 2025-06-03 at 16 44 [EMAIL] 72 Zoho CRN2Linking vour Zoho CRM account...
|
NULL
|
9106189538570654657
|
NULL
|
visual_change
|
ocr
|
NULL
|
NotionFileFoitViewHistoryWindowHelpntearation-appL NotionFileFoitViewHistoryWindowHelpntearation-appL Lukas Kovalik's ..Integration-aoo"Private vsearchn HomeNotion AlInboxlLioraryNriai!Sprint=1 Stefka 1-1= deve EvaluationKnowledgee ldeasPrivateIntegration-appWork Knowledgetesting keyboardB YEAR 202619 New page' New pagePersonal Home= LOGS% Budget2 ApartmánE kouterPonulation decline ex…senorty reves• Martie Interview Preparation= Pain Tracker5 Daily Fitness Habit Tr...=1 Plans 2024PAWDailysettings ana contias*1 Medical documentsжелания= Dream= NASPerfect Day= Family treea Chausnan= Redis opportunity sync•.* MогeSupport Daily • in 1h 44 mA100% [45lThu 16 Apr 13:16:52Ax rans ate to Enalish XnSharev@Lukas Kovalik looks like Zoho indeed prevents us trom tollowing normal Tlow as we neverget an event from opened windowl created a task to work on new mechanism, we will workon it soonDaniil [7:47 PM]wLuKas rowaTor conex wecan oossov work croune unis ov oassno ne connectonstatus through our backend rather than getting it from the authentication window. It willhave its limitations, but is better than nothingStefka Stoyanova [9:02 AM]Guvs, do vou have anv tests to prevent rearessions? We have 2 trial customers whichcomplain about Zoho connection and we'll probably loose them because of it. Thisconnection contirmation was working betore and now customers are pointing it is notworking which is a hit to our reputationMy question is can we rely on integration.app thatcnanees ncrws wioe cauoent oroacrvev or we neea to nave oulr curomalee testsensure this?Danill 2:23 PM]@sterka stoyanova we do some connector testing, but not ena-to-end vauth tlowDecause it's too taky (companles nave all sorts or anti-oot protection for log ins and it isusually not worth trying to fight it).So in this case (something is changing in the auth Ul ofthe external app, we don't plan tests in the foreseeable future, unfortunatelv.If vou have anidea for how to test it automatically - let's discuss.Bohdan [3:53 PM]@Stefka Stovanova @Lukas KovalikWe just released a fallback mechanism to supportcases like Zoho abovelt should make connection setup process more reliable and preventthis problem in the tuture+::Lukas Kovalik Jun 3rd, 202/Mat 4:38 PM1. There appears to be a recent change in the SDK ©Auth mechanism. When a new clientconnecis to the platrorm usins zono, we no longer receive a Promisehitos:conso.e.integraton.aop/rer/sok/casses/intecranonAccessor.ntm.robenNewconnection) upon successtul login. Ihis functionality was working just a tew weeks ago.ealteeconsole.integration.appntecranonAccessor lniecranon AdosDk-valieDocumentation for Integration App SDK47 replies• Daniil Jun 3rd, 2025 at 4:39 PM60 cc @Bohdan - could vou check oiz?l) Bohdan Jun 3rd, 2025 at 4:42 PM0 Hi, @Lukas Kovalik!From ine code and Trom tne fer aocs i see mat lt must retumn a promiseeven if something was wrong internally it's sall an async funchonDo vou have an examole of how vou are using it.Lukas Kovallk Jun 3rd. 2025 at 4:44 PMwhen we try to login we go through the process, log in via google.CleanShot 2025-06-03 at 16 44 [EMAIL] 72 Zoho CRN2Linking vour Zoho CRM account...
|
35988
|
|
37003
|
754
|
11
|
2026-04-16T11:15:49.228725+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776338149228_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpSupport Daily • in 45 mA100% 1978 • Thu 16 Apr 14:15:49• •ec2-user@ip-10-20-6-111:~DOCKERDEV (docker)H82APP (-zsh)83ec2-user@ip-10-.. 884-zsh• ₴5-zsh86-zshO 87* Unable to a...88ec2-user@ip-10-... *9L3Vzci1kZWwiLCJLdmVudExLYWREZWxLdGVkIjo1L3dlYmhvb2svaW50YXBwL2xkLWRLbCIsImV2zWS0RGVhbERLbGV0ZWQ101Lvd2ViaG9vay9pbnRhcHAvb3BwLWRLbCIsImV2zW50QWNjb3VudENyZWF0ZWQ101Ivd2ViaG9vay9pbnRhcHAvYWNjLWFkZCIsImV2ZW50QWNjb3VudFVwZGF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvYWNjLXVwZCIsImV2ZW50Q29udGFjdENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvY250LWFkZCIsImV2ZW50Q29udGFjdFVwZGF0ZWQiOiIvd2ViaG9vay9pbnRhcHAvY250LXVwZCIsImV2ZW50UHJvZmlsZUNyZWFOZWQi0iIvd2ViaG9vay9pbnRhcHAvdXNyLWFkZCIsImV2ZW50UHJvZmlsZVVwZGF0ZWQi0i[vd2ViaG9vay9pbnRhcHAvdXNyLXVwZCIsImV2zW50TGVhZENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvbGQtYWRkIiwiZXZlbnRMZWFkVXBkYXR1ZCI6Ii93ZWJob29rL2ludGFwcC9sZC11cGQiLCJldmVudERlYWxDcmVhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC1hZGQiLCJldmVudER1YWxVcGRhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC11cGQifX0.vozy2irRr71FoTCe23TiWjUHDiRJXu90jw2Rr2Yuy2c",#provider_refresh_token: null,expires: 1776421067,refresh_token_expires: null,provider:"integration-app",state: "full-refresh",auth_scope: null,retry_after: null,created_at:"2026-04-15 10:06:30"updated_at:"2026-04-16 10:17:47",#provider_user_token_encrypted: "eyJpdiI6Implb01VZkc3UmlxTDRPcWlaaTZQblE9PSIsInZhbHV1IjoiT1VmSUJodGxiQ1NNS31xWHNtRDU0K1R40WpxQi8xNnZHaXdyS2RHMW5GaDMrQzBPUXFodnhRNm0wam40TittRVVEUGRjY1FKWXNOV2NBSnVWc1RzRkRV0VgvdURJaUU2amloSzY5Q010d25jem04bGoyZUxUaGxJMTFTR2LvanJKV0M0cHpwK21PQXZqSVLPaUJ1ZG020XAxT2tzZmdQbzU4My91UGQ5NULGdkt6b1IwNGJwcUFoQLpHMVdNWj LOWU9SaUc1U2h0TzM2cWRNd0pGTT1QazJ2ZWtQY05sRFA0L29MeG1MekdhOGRaUD14MD1LcmRTNm1CQ1pjMDBYcXgrME1PQi9NL3QxK2VIM3U2b1hrWGxra2E0NEtKRjRyZHFrMjExWLdsYy90V2Q4Vkh6cXRxRTU4eWZRMH1jY1BBbU5LMUk10TJvN2pLU2V0QUtEZjhST0V1Y3ZicjRmY2JXWWVjTlF2SVBCV3VBR3dManM0bFhYeE03Q3dERitGM0p20HNPcHBDS3o2M1hUMWpLLy8rdFRUeUVhZTltMnNKcnJwcVLEL283RGxKYk1NazdGMFhFWmRXVWsvOHppTHRXdmJxSkRHQmhGeTFJL1gxWjFmRk4yMzB1TjFURVU1TGpvZEwzV2R1YXN2aXphRUs2TFVh0FNkRmtrUWdRbi9RLzZSZnRHai8vcVZFWkRGbzArU0U1YjQyV1I0MD1rZlF2alhhQ1ZHZ09vTXZZVOZDWmZhQSthMG50VjMvTkZt0HVtZVpLVmpPcUJCbzdjRHF2QnJRSUNYTkF3aVNwRmtsYXg1TmFn0CthcU9VQUorTkppZWZ2NEZKc0xEQitIdFZ4MUJubGJiTUtCbzlQMWo1VncxT0toWTVXQXLGNysxTnYrTTM0bFhtZzdBRDMyeHp3NmRUVEJ1Ym0zUDZKbExBWHdLU1VjNEptcUpjTXLick1ЗNms5bFlHQU1PWHVXRHpZMU1URG55dnFBbG0zaWEvUTlEMjJN0XhzNFpwYnZ5Q2RTTWJpV11NYVRXNm5hYWo2REV1bGR2bzRwK3FTаzFCMjV0MHhPWmV1NU14d3Y0WWk0V2N2dXQyK0ZCSiszZmZleElvVWx6V0tUdU9FaUJYcXdCaUs1RzNmRmZWQlc1dXAyMjgvSWNsakEyY1BBUnhmK1NzNDFmUGU5WWVHS25GZ01wSTZ6L3I0RjQyRnlVNXRsWUtlaTY4SkdTYzdoMkhsZF1KT0N5YXZrdXhDZmRIS285WjQwL21FUmsxdlV2dDYwMk9uUU5XU®VaWmJabThFR1BYR1dSQlhKRUhNWmlPWUpJaHhyU00wWEhWbWxNRWdmOWxySGVML2ZOdVNINTg0T0RQditFaXdSNTJtYVhSeHNkY3I0ajV0cnltWjhOYW1SU1VINE5PbXN4Z1JpRUpsTCtFdW1zMVFKclJTRHRtSWFBWVg5a2VRMmt1aC9xdFRCb1doT301c2dBRXJzTVhmemViNmE0VkJmK2M5ejAwNkZvWkFockdub3RFRlpzMHE0T2ZmeS9kbW45Qll1Nmt4VЗNNbHlZOVdSK2dmUFM2Y®h5bGwyeFNT0HBtT0tGWndZa®dGajRMQUdYUmNaYVp@QUQ×SStWU1Y3ZmVmV@xlZ081MWlubmtncXIrTlVIVzg1em95WGo0WjhCNmFtQ0FPc1ZmMzdtSUVIVy8vR3QyM2tDL1VyN01ETHVoaHFUcjdic1NPQm45R3F3RU1SU3d5bWh1V1pqa1oxemhhKzJWemVDdmdsbVU5VWL6T01jNkE1WnhSdzhybWQ1NTFGYkFmbldta0JXNDhmY2NiSHp1TzhEUGFDSWxIdWJmbFJvQTN3cGZFZLpwOHZ5L01xYUFBUURCSWx10XpISEt0SVd3NXNpdnpZZJLnNWx1M0k0a25VNnJHYVZhcDMwM1YvNjg3ZDdJQzdZb0pLL2NFdmt1NnBodjdW0GL6cVI1UEYxbGR4WLNSTVpycDd1Z016SkM5USt2ckZmVUtmNXBnZmZDZmZLU1kгK1I5N®04Q0d0MVYvаTRKZ1RUbUJScHdpSlRHTЗ1EZTJILytwSmFHZ1pKMHFYRDN®b1NKUmlSL1dKaUZ1VХN2K2E5Q3NndmU®YTlBbGtZZ1N3czk®WmQ1MFNSdXhaOHRLSGN5dXQ4RkU4dHBsZHovRHlJSkVtTlcwNVJYaGtFMLBIMUpYNTLmVHFjejJ5M2dlUFM4YUg1U1gzLzMzZTZMd2VTZldtdWQzVDZ5Z1VTdG41L2RGTXZZUGgrT2xLTFFzV205T1RGd3NMaGVXem50MnB5dnNtRDBwL1QyWGR4UT09IiwibWFjIjoiZmYwNDk3ZjYzOGRmYTFLOWUO0Tg2ZTk5MWiYjEzNDY2YWNm0TI0YTNjMzA1ZjU®MmM4MTY2MZU3YmV1ZDdhNSIsInRhZy[6[¡J9",#provider_refresh_token_encrypted: null,#encryption_key: b"\x01\x02\x03\0x"g3R7\x15&p\f Q\x7Fy\xOFLÎ?Ì, {Ïx°óMRª'|\x13§|\x01Í%(~Ñ-À19Li{@E§»\0\0\On01\x06\t*tHt=\r\x01\x07\x06_0]\x02\x01\00x x061t*THt÷\r\x01\x07\x010\x1E\x06\t'TH\x01e\x03\x04\x01.0\x11\x04\fViS\x17.\x04T;= 1_|x02\x01\x10E+h°-Áu1üT-nÂ\x1E5÷\x16 11·\x1C}7..Œ!Х -2=⅕ÝâùÊí\x11b~UÍÚ",sociable_type: "user",181}Ssa->state ='connected';"connected"> Ssa->saveO);7b0482"}[2026-04-16 11:07:00] production.INFO: [SocialAccountObserver] Saving model {"correlation_id":"f0c27b9c-124b-4113-ba69-6032b77e1f59","trace_id":"1f319797-bc16-43f3-95f2-81fc92= true> [ec2-user@ip-10-20-6-111 ~]$ 0...
|
NULL
|
9105447874947791396
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpSupport Daily • in 45 mA100% 1978 • Thu 16 Apr 14:15:49• •ec2-user@ip-10-20-6-111:~DOCKERDEV (docker)H82APP (-zsh)83ec2-user@ip-10-.. 884-zsh• ₴5-zsh86-zshO 87* Unable to a...88ec2-user@ip-10-... *9L3Vzci1kZWwiLCJLdmVudExLYWREZWxLdGVkIjo1L3dlYmhvb2svaW50YXBwL2xkLWRLbCIsImV2zWS0RGVhbERLbGV0ZWQ101Lvd2ViaG9vay9pbnRhcHAvb3BwLWRLbCIsImV2zW50QWNjb3VudENyZWF0ZWQ101Ivd2ViaG9vay9pbnRhcHAvYWNjLWFkZCIsImV2ZW50QWNjb3VudFVwZGF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvYWNjLXVwZCIsImV2ZW50Q29udGFjdENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvY250LWFkZCIsImV2ZW50Q29udGFjdFVwZGF0ZWQiOiIvd2ViaG9vay9pbnRhcHAvY250LXVwZCIsImV2ZW50UHJvZmlsZUNyZWFOZWQi0iIvd2ViaG9vay9pbnRhcHAvdXNyLWFkZCIsImV2ZW50UHJvZmlsZVVwZGF0ZWQi0i[vd2ViaG9vay9pbnRhcHAvdXNyLXVwZCIsImV2zW50TGVhZENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvbGQtYWRkIiwiZXZlbnRMZWFkVXBkYXR1ZCI6Ii93ZWJob29rL2ludGFwcC9sZC11cGQiLCJldmVudERlYWxDcmVhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC1hZGQiLCJldmVudER1YWxVcGRhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC11cGQifX0.vozy2irRr71FoTCe23TiWjUHDiRJXu90jw2Rr2Yuy2c",#provider_refresh_token: null,expires: 1776421067,refresh_token_expires: null,provider:"integration-app",state: "full-refresh",auth_scope: null,retry_after: null,created_at:"2026-04-15 10:06:30"updated_at:"2026-04-16 10:17:47",#provider_user_token_encrypted: "eyJpdiI6Implb01VZkc3UmlxTDRPcWlaaTZQblE9PSIsInZhbHV1IjoiT1VmSUJodGxiQ1NNS31xWHNtRDU0K1R40WpxQi8xNnZHaXdyS2RHMW5GaDMrQzBPUXFodnhRNm0wam40TittRVVEUGRjY1FKWXNOV2NBSnVWc1RzRkRV0VgvdURJaUU2amloSzY5Q010d25jem04bGoyZUxUaGxJMTFTR2LvanJKV0M0cHpwK21PQXZqSVLPaUJ1ZG020XAxT2tzZmdQbzU4My91UGQ5NULGdkt6b1IwNGJwcUFoQLpHMVdNWj LOWU9SaUc1U2h0TzM2cWRNd0pGTT1QazJ2ZWtQY05sRFA0L29MeG1MekdhOGRaUD14MD1LcmRTNm1CQ1pjMDBYcXgrME1PQi9NL3QxK2VIM3U2b1hrWGxra2E0NEtKRjRyZHFrMjExWLdsYy90V2Q4Vkh6cXRxRTU4eWZRMH1jY1BBbU5LMUk10TJvN2pLU2V0QUtEZjhST0V1Y3ZicjRmY2JXWWVjTlF2SVBCV3VBR3dManM0bFhYeE03Q3dERitGM0p20HNPcHBDS3o2M1hUMWpLLy8rdFRUeUVhZTltMnNKcnJwcVLEL283RGxKYk1NazdGMFhFWmRXVWsvOHppTHRXdmJxSkRHQmhGeTFJL1gxWjFmRk4yMzB1TjFURVU1TGpvZEwzV2R1YXN2aXphRUs2TFVh0FNkRmtrUWdRbi9RLzZSZnRHai8vcVZFWkRGbzArU0U1YjQyV1I0MD1rZlF2alhhQ1ZHZ09vTXZZVOZDWmZhQSthMG50VjMvTkZt0HVtZVpLVmpPcUJCbzdjRHF2QnJRSUNYTkF3aVNwRmtsYXg1TmFn0CthcU9VQUorTkppZWZ2NEZKc0xEQitIdFZ4MUJubGJiTUtCbzlQMWo1VncxT0toWTVXQXLGNysxTnYrTTM0bFhtZzdBRDMyeHp3NmRUVEJ1Ym0zUDZKbExBWHdLU1VjNEptcUpjTXLick1ЗNms5bFlHQU1PWHVXRHpZMU1URG55dnFBbG0zaWEvUTlEMjJN0XhzNFpwYnZ5Q2RTTWJpV11NYVRXNm5hYWo2REV1bGR2bzRwK3FTаzFCMjV0MHhPWmV1NU14d3Y0WWk0V2N2dXQyK0ZCSiszZmZleElvVWx6V0tUdU9FaUJYcXdCaUs1RzNmRmZWQlc1dXAyMjgvSWNsakEyY1BBUnhmK1NzNDFmUGU5WWVHS25GZ01wSTZ6L3I0RjQyRnlVNXRsWUtlaTY4SkdTYzdoMkhsZF1KT0N5YXZrdXhDZmRIS285WjQwL21FUmsxdlV2dDYwMk9uUU5XU®VaWmJabThFR1BYR1dSQlhKRUhNWmlPWUpJaHhyU00wWEhWbWxNRWdmOWxySGVML2ZOdVNINTg0T0RQditFaXdSNTJtYVhSeHNkY3I0ajV0cnltWjhOYW1SU1VINE5PbXN4Z1JpRUpsTCtFdW1zMVFKclJTRHRtSWFBWVg5a2VRMmt1aC9xdFRCb1doT301c2dBRXJzTVhmemViNmE0VkJmK2M5ejAwNkZvWkFockdub3RFRlpzMHE0T2ZmeS9kbW45Qll1Nmt4VЗNNbHlZOVdSK2dmUFM2Y®h5bGwyeFNT0HBtT0tGWndZa®dGajRMQUdYUmNaYVp@QUQ×SStWU1Y3ZmVmV@xlZ081MWlubmtncXIrTlVIVzg1em95WGo0WjhCNmFtQ0FPc1ZmMzdtSUVIVy8vR3QyM2tDL1VyN01ETHVoaHFUcjdic1NPQm45R3F3RU1SU3d5bWh1V1pqa1oxemhhKzJWemVDdmdsbVU5VWL6T01jNkE1WnhSdzhybWQ1NTFGYkFmbldta0JXNDhmY2NiSHp1TzhEUGFDSWxIdWJmbFJvQTN3cGZFZLpwOHZ5L01xYUFBUURCSWx10XpISEt0SVd3NXNpdnpZZJLnNWx1M0k0a25VNnJHYVZhcDMwM1YvNjg3ZDdJQzdZb0pLL2NFdmt1NnBodjdW0GL6cVI1UEYxbGR4WLNSTVpycDd1Z016SkM5USt2ckZmVUtmNXBnZmZDZmZLU1kгK1I5N®04Q0d0MVYvаTRKZ1RUbUJScHdpSlRHTЗ1EZTJILytwSmFHZ1pKMHFYRDN®b1NKUmlSL1dKaUZ1VХN2K2E5Q3NndmU®YTlBbGtZZ1N3czk®WmQ1MFNSdXhaOHRLSGN5dXQ4RkU4dHBsZHovRHlJSkVtTlcwNVJYaGtFMLBIMUpYNTLmVHFjejJ5M2dlUFM4YUg1U1gzLzMzZTZMd2VTZldtdWQzVDZ5Z1VTdG41L2RGTXZZUGgrT2xLTFFzV205T1RGd3NMaGVXem50MnB5dnNtRDBwL1QyWGR4UT09IiwibWFjIjoiZmYwNDk3ZjYzOGRmYTFLOWUO0Tg2ZTk5MWiYjEzNDY2YWNm0TI0YTNjMzA1ZjU®MmM4MTY2MZU3YmV1ZDdhNSIsInRhZy[6[¡J9",#provider_refresh_token_encrypted: null,#encryption_key: b"\x01\x02\x03\0x"g3R7\x15&p\f Q\x7Fy\xOFLÎ?Ì, {Ïx°óMRª'|\x13§|\x01Í%(~Ñ-À19Li{@E§»\0\0\On01\x06\t*tHt=\r\x01\x07\x06_0]\x02\x01\00x x061t*THt÷\r\x01\x07\x010\x1E\x06\t'TH\x01e\x03\x04\x01.0\x11\x04\fViS\x17.\x04T;= 1_|x02\x01\x10E+h°-Áu1üT-nÂ\x1E5÷\x16 11·\x1C}7..Œ!Х -2=⅕ÝâùÊí\x11b~UÍÚ",sociable_type: "user",181}Ssa->state ='connected';"connected"> Ssa->saveO);7b0482"}[2026-04-16 11:07:00] production.INFO: [SocialAccountObserver] Saving model {"correlation_id":"f0c27b9c-124b-4113-ba69-6032b77e1f59","trace_id":"1f319797-bc16-43f3-95f2-81fc92= true> [ec2-user@ip-10-20-6-111 ~]$ 0...
|
NULL
|
|
48181
|
1023
|
11
|
2026-04-17T12:28:40.650181+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776428920650_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplihol• Tech Day Review - in 1h 32 m100% <478DEV (docker)X4DOCKER-881DEV (docker)APP (-zsh)• *3-zshconfigcachecompiledeventsroutesviewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-emails:worker-emails_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny#•95* Review screenp...• 286ec2-user@ip-10-...19.97ms DONE88.71ms DONE5.81ms DONE4.39ms DONE4.85ms DONE26.89ms DONEO x7Fri 17 Apr 15:28:401₴81ec2-user@ip-10-...• 88DEV...
|
NULL
|
9105249869271337464
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelplihol• Tech Day Review - in 1h 32 m100% <478DEV (docker)X4DOCKER-881DEV (docker)APP (-zsh)• *3-zshconfigcachecompiledeventsroutesviewsjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:stoppedjiminny-worker-processing-2:jiminny-worker-processing-2_00: stoppedjiminny-worker-processing-3:jiminny-worker-processing-3_00: stoppedjiminny-worker-processing-4:jiminny-worker-processing-4_00:stoppedjiminny-worker-processing-5:jiminny-worker-processing-5_00: stoppedworker-analytics:worker-analytics_00: stoppedworker-crm-update:worker-crm-update_00: stoppedworker-download:worker-download_00: stoppedworker-nudges:worker-nudges_00: stoppedworker:worker_00: stoppedworker-audio:worker-audio_00: stoppedworker-calendar:worker-calendar_00: stoppedworker-emails:worker-emails_00: stoppedjiminny-worker-processing-1:jiminny-worker-processing-1_00: stoppedworker-conferences:worker-conferences_00: stoppedworker-crm-sync:worker-crm-sync_00: stoppedworker-es-update:worker-es-update_00: stoppedartisan-schedule:artisan-schedule_00: stoppedartisan-schedule:artisan-schedule_00: startedjiminny-worker-processing-1:jiminny-worker-processing-1_00: startedjiminny-worker-processing-2:jiminny-worker-processing-2_00: startedjiminny-worker-processing-3:jiminny-worker-processing-3_00: startedjiminny-worker-processing-4:jiminny-worker-processing-4_00: startedjiminny-worker-processing-5:jiminny-worker-processing-5_00: startedjiminny-worker-processing-delayed: jiminny-worker-processing-delayed_00:startedworker:worker_00: startedworker-analytics:worker-analytics_00: startedworker-audio:worker-audio_00: startedworker-calendar:worker-calendar_00: startedworker-conferences:worker-conferences_00: startedworker-crm-sync:worker-crm-sync_00: startedworker-crm-update:worker-crm-update_00:startedworker-download:worker-download_00: startedworker-emails:worker-emails_00: startedworker-es-update:worker-es-update_00: startedworker-nudges:worker-nudges_00: startedroot@docker_lamp_1:/home/jiminny#•95* Review screenp...• 286ec2-user@ip-10-...19.97ms DONE88.71ms DONE5.81ms DONE4.39ms DONE4.85ms DONE26.89ms DONEO x7Fri 17 Apr 15:28:401₴81ec2-user@ip-10-...• 88DEV...
|
NULL
|
|
52876
|
1147
|
21
|
2026-04-20T07:46:30.559809+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776671190559_m2.jpg...
|
PhpStorm
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Find in Files
9 matches in 3 files
File mask:
*.ph Find in Files
9 matches in 3 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
$this->userPilotClient->
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Find in Files","depth":1,"bounds":{"left":0.2992021,"top":0.12609737,"width":0.024601065,"height":0.013567438},"role_description":"text"},{"role":"AXStaticText","text":"9 matches in 3 files","depth":1,"bounds":{"left":0.32779256,"top":0.12609737,"width":0.039893616,"height":0.013567438},"role_description":"text"},{"role":"AXCheckBox","text":"File mask:","depth":1,"bounds":{"left":0.5315825,"top":0.12290503,"width":0.029587766,"height":0.019952115},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"*.php","depth":1,"bounds":{"left":0.5621675,"top":0.11971269,"width":0.027925532,"height":0.027134877},"value":"*.php","role_description":"combo box","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"*.php","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"Auto","depth":6,"role_description":"text"},{"role":"AXTextField","text":"*.php","depth":2,"bounds":{"left":0.5661569,"top":0.12609737,"width":0.011635638,"height":0.013567438},"value":"*.php","role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":1,"bounds":{"left":0.5944149,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Pin Window","depth":1,"bounds":{"left":0.6037234,"top":0.12290503,"width":0.00731383,"height":0.017557861},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":1,"bounds":{"left":0.2962101,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"$this->userPilotClient->","depth":2,"bounds":{"left":0.30718085,"top":0.15403032,"width":0.26196808,"height":0.017557861},"value":"$this->userPilotClient->","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.578125,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match case","depth":1,"bounds":{"left":0.5880984,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":1,"bounds":{"left":0.59674203,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":1,"bounds":{"left":0.60538566,"top":0.15403032,"width":0.00731383,"height":0.017557861},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":2,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In Project","depth":2,"bounds":{"left":0.2992021,"top":0.1867518,"width":0.022938829,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Module","depth":2,"bounds":{"left":0.32214096,"top":0.1867518,"width":0.019281914,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Directory","depth":2,"bounds":{"left":0.3414229,"top":0.1867518,"width":0.022606382,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Scope","depth":2,"bounds":{"left":0.36402926,"top":0.1867518,"width":0.017287234,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Module","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.099734046,"height":0.0},"role_description":"pop up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":1,"bounds":{"left":0.27027926,"top":1.0,"width":0.1974734,"height":0.0},"value":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Providers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/resources/views/emails/reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Mail/Reports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/AutomatedReports","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/routes","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/database/migrations","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API/V2","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/DealInsights","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Policies","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Helpers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/storage/logs","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Internal","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Transcription","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Repositories/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Observers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Mail","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/User","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Models/Activity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Activity/Event","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Sidekick","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Listeners/Activities/Bots","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Events/Activities/Bots","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/MeetingBot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/RingCentral","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity/Gmail","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Jobs/Mailbox","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/front-end/src/composables","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Calendars","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/API","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Queue","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Component/Transcription/Job","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Listeners","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Crm/Listeners","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Traits","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/tests/Unit/Services/Crm","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Activity","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/app/Services/Calendar/Command","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/.idea/queries","depth":6,"role_description":"text"},{"role":"AXStaticText","text":"/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm","depth":6,"role_description":"text"}]...
|
9104874009110612268
|
-8401015989125194545
|
click
|
accessibility
|
NULL
|
Find in Files
9 matches in 3 files
File mask:
*.ph Find in Files
9 matches in 3 files
File mask:
*.php
*.php
Auto
*.php
Filter Search Results
Pin Window
Search History
$this->userPilotClient->
New Line
Match case
Words
Regex
Replace History
Replace
New Line
Preserve case
In Project
Module
Directory
Scope
Module
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/AutomatedReports/UserPilot
/Users/lukas/jiminny/app/app/Listeners/Crm
/Users/lukas/jiminny/app/app/Providers
/Users/lukas/jiminny/app/app/Http/Controllers
/Users/lukas/jiminny/app/app/Console/Commands/Reports
/Users/lukas/jiminny/app/app/VO/Repository/OnDemandActivitySearch
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences/UserPilot
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook
/Users/lukas/jiminny/app/resources/views/emails/reports
/Users/lukas/jiminny/app/app/Mail/Reports
/Users/lukas/jiminny/app/app/Repositories
/Users/lukas/jiminny/app/app/Http/Controllers/API/UserAutomatedReports
/Users/lukas/jiminny/app/app/Services/Kiosk/AutomatedReports
/Users/lukas/jiminny/app/app/Component/ActivitySearch/Service
/Users/lukas/jiminny/app/app/Jobs/AutomatedReports
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Salesforce
/Users/lukas/jiminny/app/app/Services/Crm/Salesforce
/Users/lukas/jiminny/app/routes
/Users/lukas/jiminny/app/app/Console/Commands
/Users/lukas/jiminny/app/database/migrations
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/325d461a-c90f-430a-99d4-6ddfce0c61d7
/Users/lukas/jiminny/app/app/Http/Controllers/API/V2
/Users/lukas/jiminny/app/app/Services/Crm
/Users/lukas/jiminny/app/app/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/DealInsights
/Users/lukas/jiminny/app/app/Policies
/Users/lukas/jiminny/app/app/Services/Crm/Helpers
/Users/lukas/jiminny/app/app/Jobs/Crm
/Users/lukas/jiminny/app/app/Events/Crm
/Users/lukas/jiminny/app/app/Models
/Users/lukas/jiminny/app/app/Listeners/Teams
/Users/lukas/jiminny/app/app/Jobs/Crm/Salesforce
/Users/lukas/jiminny/app/app
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Journal
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/OpportunitySyncStrategy
/Users/lukas/jiminny/app/app/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/storage/logs
/Users/lukas/jiminny/app
/Users/lukas/jiminny/app/app/Services/Internal
/Users/lukas/jiminny/app/app/Listeners/Transcription
/Users/lukas/jiminny/app/app/Repositories/Crm
/Users/lukas/jiminny/app/tests/Unit/Listeners/Teams
/Users/lukas/jiminny/app/app/Models/Crm
/Users/lukas/Library/Application Support/JetBrains/PhpStorm2026.1/consoles/db/91133dfa-8d71-4e12-bfb8-fec7f1afba8f
/Users/lukas/jiminny/app/app/Observers
/Users/lukas/jiminny/app/app/Services/Mail
/Users/lukas/jiminny/app/app/Console/Commands/Activities
/Users/lukas/jiminny/app/app/Console/Commands/Activities/Migrator
/Users/lukas/jiminny/app/app/Console/Commands/Crm
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/User
/Users/lukas/jiminny/app/app/Models/Activity
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot/Webhook
/Users/lukas/jiminny/app/app/Component/AiAutomation/Listeners/PendingAnalysis
/Users/lukas/jiminny/app/tests/Unit/Services/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/ActivitySearch/FilterDefinition/DealInsights
/Users/lukas/jiminny/app/app/Services/Crm/DecorateActivity
/Users/lukas/jiminny/app/app/Component/Activity/Event
/Users/lukas/jiminny/app/app/Component/Sidekick
/Users/lukas/jiminny/app/app/Jobs/Activity/PushSummaryToCrm
/Users/lukas/jiminny/app/app/Events/Activities/Crm
/Users/lukas/jiminny/app/app/Listeners/Activities/Conferences
/Users/lukas/jiminny/app/app/Listeners/Activities/Bots
/Users/lukas/jiminny/app/app/Services/RecallAI/Webhooks/Handlers
/Users/lukas/jiminny/app/app/Events/Activities/Bots
/Users/lukas/jiminny/app/app/Component/MeetingBot
/Users/lukas/jiminny/app/app/Services/Activity/RingCentral
/Users/lukas/jiminny/app/app/Http/Controllers/Webhook/Hubspot
/Users/lukas/jiminny/app/app/Services/Activity/Gmail
/Users/lukas/jiminny/app/app/Services/Crm/CrmObjects/ServiceTraits
/Users/lukas/jiminny/app/app/Jobs/Mailbox
/Users/lukas/jiminny/app/app/Console
/Users/lukas/jiminny/app/front-end/src/composables
/Users/lukas/jiminny/app/app/Console/Commands/Calendars
/Users/lukas/jiminny/app/app/Http/Controllers/API
/Users/lukas/jiminny/app/app/Http/Controllers/Internal/WebhookReceiver
/Users/lukas/jiminny/app/app/Services/Crm/IntegrationApp/ServiceTraits
/Users/lukas/jiminny/app/app/Component/Queue
/Users/lukas/jiminny/app/app/Console/Commands/Crm/Hubspot
/Users/lukas/jiminny/app/app/Component/Transcription/Job
/Users/lukas/jiminny/app/tests/Unit/Services/Listeners
/Users/lukas/jiminny/app/app/Services/Crm/Listeners
/Users/lukas/jiminny/app/app/Traits
/Users/lukas/jiminny/app/tests/Unit/Jobs/Crm/Hubspot
/Users/lukas/jiminny/app/tests/Unit/Services/Crm
/Users/lukas/jiminny/app/app/Services/Activity
/Users/lukas/jiminny/app/app/Services/Calendar/Command
/Users/lukas/jiminny/app/.idea/queries
/Users/lukas/jiminny/app/vendor/hubspot/api-client/codegen/Crm...
|
NULL
|
|
34442
|
695
|
6
|
2026-04-16T08:38:46.066344+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776328726066_m2.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRetactonTool PhpStormFileFditViewNavigateCodelaraveRetactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny kProject vC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php(©) SendReportJob.php= custom.log= laravel.loce SF (iminny@localhostc HS_local fiminny@localhost¿ console (EU](C SlackController.phpC SupportController.prC TeamSetupControlle(C) UserAutomatedRepc(©) WelcomeController.rMidd leware>_RequestsM Resources> MResponses> M7 Serializers> M TransformersC Kernel.phpT PlaylistTrackResourceTT ValidateCrmConnection>_ Integrations›_ Interactionsv |HobsActiVity> M AiAutomationM AiReports>M Audiov M AutomatedReportsC RequestGenerateAsl(C) RequestGenerateRel(©) SendReportJob.php(C SendReportMailJob.l>D Calendar>D ermDealRisks• Malloox> M MeetingBot> M Middleware> M Streaming> MTeam› _ TelephonyD UserC BaseProcessingJob.phgc) DummyJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php4 console [PROD1L console [STAGING] Xg Team.php© AutomatedReportsRepository.phpIX. AUlo vHaycround vC AutomatedReportsService.php(c) TrackProviderinstalleabvent.oneC CreateActivityLoggedEvent.php546ActivityLoagea.onpFRUM playdooks pJoin playbook_cacegories pc1<->1..n: on p.id = pc.plavbook idwnere orrealio= ano p.acmuty tvoe =event)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C AutomatedReportResult.php(C AutomatedReport.php548549SELECT * FROM crm_fields WHERE crm confiquration id = 1 and object type = 'event":class TeamSetupController extends Controller44X2 ^550551552SELECT * FROM crm field values WHERE crm_ field id = 4:select * from crm_layouts cl Join playbook_layouts pul<->l.n: on cl.1d = pl.layout_1dpublic function 1ntegrationApploken: JsonResponsewhere crm_conf1gurat1on_1d = 1 and pl.playbooK_1d = 175suser = suhis->gecusero;"ueanz suser-sceteailselect * trom teams;Euee** -rur autonared redorts$realProviderKey = Providers::getCrmIntegrationSlug(Steam->getCrmConfigurationO);/** If the provider is not via Intearation ApP. do nothing *if ( Providers::isIntegrationAppProvider(SrealProviderKeyreturn responseo->ison(token' => "0:Joln teams t on r.ceam 1a = t.10WHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r. expiresat >= now oR r.expires.at Is NULD):/** No need to generate a token if the user des not require CRM *if (! $user->isCrmRequiredO) {recurn responsel)->ysonul token =""J);560561563564565566567568 v569select * from automated_report_results where neportond IN (18, 35);select * from activity_searches where 1d = 10932*select * trom acuvity_search_tiluers where aculvity_searcn_1d = 10752;select * trom aucomaced_reports order dy za desci115116117118119120121122123/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */$crmProviderKey = Providers::getTranslatedfqmProviderKey(SrealProviderKey);select * trom aucomated_report_results order by za desc,select x TroIautomated_report_results where report id IN (37);select * from users where id IN (7160. 32480:$socialAccount = Suser->qetSocialAccountScrmProviderKey:/*** We need a valid token to communicate with IntegrationApp.572SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = wuid;573574575* Either we need to create a new valid token and save it in a social accountif (denniallecnunt --- nulh) fLocal changesShelfConsole XLog xChanges 8 files= .env.local appActivityController.php app/Http/Controllers/API© JiminnyDebugCommand.php app/Console/Commandspip logging.pnp contig(C) PlavbackService.php app/Services(C) ReportController.php app/Http/Controllers/Webhook(C SyncTolntercom.php app/Jobs/Teampip web.one roules›Unversioned Files 8 filesSide-by-side viewer@a0a9685c app/Jobs/Team/SyncTolntercom.phgDo not ignoreHighlight words* 15current versionommmy voes reallle oyneromtercomyIntercomService SintercomService,(Jiminny \Jobs\Team > SyncTolntercomIntercomService SintercomService.ActivityProv1derReg1stry sactivityProv1derReg1stry.TeamRepos1tory steamRepos1tory,ActivityProviderregistry sactivityProviderRegistry,TeamRepository steamRepository,: VOld&): void {steam = schis->ceam;return;// we don't want to sync parcher accounts to Incercom.if ($team->isPartnerDefault( === false) (recurnrpteam = sch1s->ceam;// We don't want to sync partner accounts to Intercom.if (Steam->isPartnerDefaultO === false) «return,$crm = Steam->getCrmConfiqurationO:Create remote IntercomcolllpallysintercomService->createCompany(l'name"= steam->getName)'company_1d'= $team->getUuid().'size' => $team->seats,"renore created at'= Steam->geccreacedAt()->geclimestamp),$crm = Steam->getCrmConfigurationO:stler = steam->getliero:stlerlltle = stier?->getlitle ?? 'Unknown';1/ create remoce Incercom company.г PHP Tlles // Iry sonargube cloud for tree l/ Download sonargube server |/ Learn more // Dont ask again (5 minutes ago), 0hal• Support Daily • in 3h 22 mA]100% 145Thu 16 Apr 11:38:45AutomatedReportsCommandTest-CascadeIntegration App ConneMa lminny v018 416 X13 ^Integration App - Full Connection ProcessThe Flow (end-to-end)FrontendBackend1. GET /api/v1/connect-providers+ providers with vialntegrationApp flag2. GET /api/v1/integration-app-token+ Jwl signed with Mszsb (team Uulb, webhook URLS)Backend creates retreshes Socia Account state = FULL REFRESH3. new IntegrationAppclient( token r),integration (providerName)•ovelvewconnectrom...y+ Fromhse reso ves wiih connection obiect4. it (connection.disconnected == false)POST /api/v1/integration-app-connectBackend: SocialAccount.state = STATE CONNECTEDBackend: dispatch SocialAccountConnected event+ { success: true }5. window. Location = "/dashboard"Key Details Per StepSten 2 - Token Generation antedrat ionApotioken• Backend checks if a SocialAccount with provider = "integration-app"exisis for tne user=No account → creates one, state = STATE_FULL REFRESH_REQUIREDExpired token → refreshes the JWT, updates the accountAsk anything (2+L)+ @ CodeClaude Sonnet 4.64 anlerencesWWinasun leamsuir-oia 4 spaces...
|
NULL
|
9104556296169787671
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodelaraveRetactonTool PhpStormFileFditViewNavigateCodelaraveRetactonToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny kProject vC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php(©) SendReportJob.php= custom.log= laravel.loce SF (iminny@localhostc HS_local fiminny@localhost¿ console (EU](C SlackController.phpC SupportController.prC TeamSetupControlle(C) UserAutomatedRepc(©) WelcomeController.rMidd leware>_RequestsM Resources> MResponses> M7 Serializers> M TransformersC Kernel.phpT PlaylistTrackResourceTT ValidateCrmConnection>_ Integrations›_ Interactionsv |HobsActiVity> M AiAutomationM AiReports>M Audiov M AutomatedReportsC RequestGenerateAsl(C) RequestGenerateRel(©) SendReportJob.php(C SendReportMailJob.l>D Calendar>D ermDealRisks• Malloox> M MeetingBot> M Middleware> M Streaming> MTeam› _ TelephonyD UserC BaseProcessingJob.phgc) DummyJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php4 console [PROD1L console [STAGING] Xg Team.php© AutomatedReportsRepository.phpIX. AUlo vHaycround vC AutomatedReportsService.php(c) TrackProviderinstalleabvent.oneC CreateActivityLoggedEvent.php546ActivityLoagea.onpFRUM playdooks pJoin playbook_cacegories pc1<->1..n: on p.id = pc.plavbook idwnere orrealio= ano p.acmuty tvoe =event)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.php(C AutomatedReportResult.php(C AutomatedReport.php548549SELECT * FROM crm_fields WHERE crm confiquration id = 1 and object type = 'event":class TeamSetupController extends Controller44X2 ^550551552SELECT * FROM crm field values WHERE crm_ field id = 4:select * from crm_layouts cl Join playbook_layouts pul<->l.n: on cl.1d = pl.layout_1dpublic function 1ntegrationApploken: JsonResponsewhere crm_conf1gurat1on_1d = 1 and pl.playbooK_1d = 175suser = suhis->gecusero;"ueanz suser-sceteailselect * trom teams;Euee** -rur autonared redorts$realProviderKey = Providers::getCrmIntegrationSlug(Steam->getCrmConfigurationO);/** If the provider is not via Intearation ApP. do nothing *if ( Providers::isIntegrationAppProvider(SrealProviderKeyreturn responseo->ison(token' => "0:Joln teams t on r.ceam 1a = t.10WHERE r.freguency = 'daily'and r.status = 1AND t.status = 'active'AND (r. expiresat >= now oR r.expires.at Is NULD):/** No need to generate a token if the user des not require CRM *if (! $user->isCrmRequiredO) {recurn responsel)->ysonul token =""J);560561563564565566567568 v569select * from automated_report_results where neportond IN (18, 35);select * from activity_searches where 1d = 10932*select * trom acuvity_search_tiluers where aculvity_searcn_1d = 10752;select * trom aucomaced_reports order dy za desci115116117118119120121122123/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */$crmProviderKey = Providers::getTranslatedfqmProviderKey(SrealProviderKey);select * trom aucomated_report_results order by za desc,select x TroIautomated_report_results where report id IN (37);select * from users where id IN (7160. 32480:$socialAccount = Suser->qetSocialAccountScrmProviderKey:/*** We need a valid token to communicate with IntegrationApp.572SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = wuid;573574575* Either we need to create a new valid token and save it in a social accountif (denniallecnunt --- nulh) fLocal changesShelfConsole XLog xChanges 8 files= .env.local appActivityController.php app/Http/Controllers/API© JiminnyDebugCommand.php app/Console/Commandspip logging.pnp contig(C) PlavbackService.php app/Services(C) ReportController.php app/Http/Controllers/Webhook(C SyncTolntercom.php app/Jobs/Teampip web.one roules›Unversioned Files 8 filesSide-by-side viewer@a0a9685c app/Jobs/Team/SyncTolntercom.phgDo not ignoreHighlight words* 15current versionommmy voes reallle oyneromtercomyIntercomService SintercomService,(Jiminny \Jobs\Team > SyncTolntercomIntercomService SintercomService.ActivityProv1derReg1stry sactivityProv1derReg1stry.TeamRepos1tory steamRepos1tory,ActivityProviderregistry sactivityProviderRegistry,TeamRepository steamRepository,: VOld&): void {steam = schis->ceam;return;// we don't want to sync parcher accounts to Incercom.if ($team->isPartnerDefault( === false) (recurnrpteam = sch1s->ceam;// We don't want to sync partner accounts to Intercom.if (Steam->isPartnerDefaultO === false) «return,$crm = Steam->getCrmConfiqurationO:Create remote IntercomcolllpallysintercomService->createCompany(l'name"= steam->getName)'company_1d'= $team->getUuid().'size' => $team->seats,"renore created at'= Steam->geccreacedAt()->geclimestamp),$crm = Steam->getCrmConfigurationO:stler = steam->getliero:stlerlltle = stier?->getlitle ?? 'Unknown';1/ create remoce Incercom company.г PHP Tlles // Iry sonargube cloud for tree l/ Download sonargube server |/ Learn more // Dont ask again (5 minutes ago), 0hal• Support Daily • in 3h 22 mA]100% 145Thu 16 Apr 11:38:45AutomatedReportsCommandTest-CascadeIntegration App ConneMa lminny v018 416 X13 ^Integration App - Full Connection ProcessThe Flow (end-to-end)FrontendBackend1. GET /api/v1/connect-providers+ providers with vialntegrationApp flag2. GET /api/v1/integration-app-token+ Jwl signed with Mszsb (team Uulb, webhook URLS)Backend creates retreshes Socia Account state = FULL REFRESH3. new IntegrationAppclient( token r),integration (providerName)•ovelvewconnectrom...y+ Fromhse reso ves wiih connection obiect4. it (connection.disconnected == false)POST /api/v1/integration-app-connectBackend: SocialAccount.state = STATE CONNECTEDBackend: dispatch SocialAccountConnected event+ { success: true }5. window. Location = "/dashboard"Key Details Per StepSten 2 - Token Generation antedrat ionApotioken• Backend checks if a SocialAccount with provider = "integration-app"exisis for tne user=No account → creates one, state = STATE_FULL REFRESH_REQUIREDExpired token → refreshes the JWT, updates the accountAsk anything (2+L)+ @ CodeClaude Sonnet 4.64 anlerencesWWinasun leamsuir-oia 4 spaces...
|
NULL
|
|
18366
|
391
|
43
|
2026-04-14T16:14:48.305835+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776183288305_m2.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
22423915328/30IICastle AgeGame Paused (P)Click a v 22423915328/30IICastle AgeGame Paused (P)Click a villager to gather food from thisFarm.Town Center0/159 5/7kovalfklukas (Britons))Creating 3%Villager2400/24006 Mindaugas: 1486/14864 Siddhraj Jaisingh: 1456/14563 Bird Jaguar: 1396/13965 Honorius: 1372/13721 kovaliklukas: 1251/12518 Ashikaga Takauji: 1244/1244Anccu Hualloc: 1243/12437 Basil the Macedonian: 1149/1149...
|
NULL
|
9104538027327279824
|
NULL
|
click
|
ocr
|
NULL
|
22423915328/30IICastle AgeGame Paused (P)Click a v 22423915328/30IICastle AgeGame Paused (P)Click a villager to gather food from thisFarm.Town Center0/159 5/7kovalfklukas (Britons))Creating 3%Villager2400/24006 Mindaugas: 1486/14864 Siddhraj Jaisingh: 1456/14563 Bird Jaguar: 1396/13965 Honorius: 1372/13721 kovaliklukas: 1251/12518 Ashikaga Takauji: 1244/1244Anccu Hualloc: 1243/12437 Basil the Macedonian: 1149/1149...
|
NULL
|
|
24742
|
535
|
0
|
2026-04-15T12:31:06.011392+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776256266011_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
BoosteroidS0 ll 0# Sprint Review - in 29 ml• 0-zsh BoosteroidS0 ll 0# Sprint Review - in 29 ml• 0-zshDOCKERO $1DEV (-zsh)182APP (-zsh)83ec2-user@ip-10-.. 884-zsh85-zsh861536336|244781accessibilitylAXStaticTextl1l-zshl0.48819443583488510.033333335071802110.02291666716337210.01777777820825581536335|24478laccessibility|AXStaticText|1|<x110.95486110448837310.032222222536802310.0388888902962208I0.[CREDIT_CARD]-zsh-100% C8 Wed 15 Apr 15:31:05T81O 87* Unable to a...O x8-zshzsh: command not found: #31105|2026-04-15T12:22:33.375110+00:00|clipboardl ||||# What's in one day's folderls ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.screenpipe/data -name "*.jpg" -exec du -c {} + 2>/dev/null | tail -1find ~/.screenpipe/data -name "*.mp4" -exec du -c {} + 2>/dev/null | tail -1# Sample filenames to understand naming patternls ~/.screenpipe/data/data/2026-04-15/ | head -20# One more query - sample ocr_text correctlysqlite3 ~/.screenpipe/db.sqliteSELECT o. frame_id, o.app_name, o.window_name, o. focused,substr(o.text, 1, 120) as text_previewFROM ocr_text oORDER BY o. frame_id DESCLIMIT 5;# And frames samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, timestamp, app_name, window_name, snapshot_path,capture_trigger, text_source, content_hashFROM framesORDER BY id DESCLIMIT 5;# And elements samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, frame_id, source, role, depth,substr(text,1,80) as text_preview,left_bound, top_bound, width_bound, height_boun...l31104|2026-04-15T12:22:33.374610+00:00|key|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]11|1131103|2026-04-15T12:22:32.539852+00:00|text|||||clear31102|2026-04-15T12:22:30.783272+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]192014791|AXTextArea| shell31101|2026-04-15T12:22:30.697760+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]19201479111lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
9103896147412646096
|
NULL
|
click
|
ocr
|
NULL
|
BoosteroidS0 ll 0# Sprint Review - in 29 ml• 0-zsh BoosteroidS0 ll 0# Sprint Review - in 29 ml• 0-zshDOCKERO $1DEV (-zsh)182APP (-zsh)83ec2-user@ip-10-.. 884-zsh85-zsh861536336|244781accessibilitylAXStaticTextl1l-zshl0.48819443583488510.033333335071802110.02291666716337210.01777777820825581536335|24478laccessibility|AXStaticText|1|<x110.95486110448837310.032222222536802310.0388888902962208I0.[CREDIT_CARD]-zsh-100% C8 Wed 15 Apr 15:31:05T81O 87* Unable to a...O x8-zshzsh: command not found: #31105|2026-04-15T12:22:33.375110+00:00|clipboardl ||||# What's in one day's folderls ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.screenpipe/data -name "*.jpg" -exec du -c {} + 2>/dev/null | tail -1find ~/.screenpipe/data -name "*.mp4" -exec du -c {} + 2>/dev/null | tail -1# Sample filenames to understand naming patternls ~/.screenpipe/data/data/2026-04-15/ | head -20# One more query - sample ocr_text correctlysqlite3 ~/.screenpipe/db.sqliteSELECT o. frame_id, o.app_name, o.window_name, o. focused,substr(o.text, 1, 120) as text_previewFROM ocr_text oORDER BY o. frame_id DESCLIMIT 5;# And frames samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, timestamp, app_name, window_name, snapshot_path,capture_trigger, text_source, content_hashFROM framesORDER BY id DESCLIMIT 5;# And elements samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, frame_id, source, role, depth,substr(text,1,80) as text_preview,left_bound, top_bound, width_bound, height_boun...l31104|2026-04-15T12:22:33.374610+00:00|key|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]11|1131103|2026-04-15T12:22:32.539852+00:00|text|||||clear31102|2026-04-15T12:22:30.783272+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]192014791|AXTextArea| shell31101|2026-04-15T12:22:30.697760+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]19201479111lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
24740
|
|
64095
|
1408
|
35
|
2026-04-21T10:24:14.960018+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776767054960_m2.jpg...
|
Firefox
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira — Work...
|
1
|
jiminny.atlassian.net/jira/software/c/projects/JY/ jiminny.atlassian.net/jira/software/c/projects/JY/boards/37...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
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
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Docs
Docs
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
6
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
Assignee: Nikolay Nikolov
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
Maintenance, Edit Parent
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
Assignee: Nikolay Yankov
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
Edit summary
Edit summary
AJ Reports, Edit Parent
AJ REPORTS
Backlog
JY-20157
JY-20157
2
Assignee: Lukas Kovalik
More actions for JY-20157 Send email notification when the report is not generated
More actions for JY-20157 Send email notification when the report is not generated
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
3
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ Reports, Edit Parent
AJ REPORTS
In Dev
JY-20372
JY-20372
6
Assignee: Nikolay Yankov
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
Growth - Maintain our competitive position, Edit Parent
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
1
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
merged pull request
Assignee: Nikolay Nikolov
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
2
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
In QA
AI
BE
FE
QA
JY-18909
JY-18909
5
pull request
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
Auto-detected activity type, Edit Parent
AUTO-DETECTED ACTIVITY TYPE
In QA
JY-19798
JY-19798
1
pull request
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy
DEPLOY
7
JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.
Prepare fallback with email for SSO for `persistent` name_id_format
REDUCE CHURN
Closed
JY-20632
JY-20632
1
merged pull request
JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.
AJ Panorama> Don't show internal errors to customers
ASK ANYTHING ON ANYTHING
Deployed
Prophet
JY-20278
JY-20278
1
Successful deployment to production.
JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.
Upgrade Python and libraries - Apr
MAINTENANCE
Deployed
JY-19967
JY-19967
1
Successful deployment to production.
JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.
CLONE - [Team insights] Filter gets reset automatically
SUPPORT TICKETS
Deployed
JY-20681
JY-20681
0.5
merged pull request
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Deployed
JY-20692
JY-20692
2
merged pull request
JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.
[Tech Day] Improve Dependabot Bot & Experiment with Github Actions
Closed
JY-20696
JY-20696
0
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Deployed
JY-20698
JY-20698
1
merged pull request
Open Rovo Chat
Open Rovo Chat
Send email notification when the report is not generated...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXRadioButton","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20372] AI Reports > Empty page design and promotion - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.11319814,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Project Phoenix – Figma","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Project Phoenix – Figma","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.041888297,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.38946527,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.40063846,"width":0.039228722,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Formalize","depth":4,"bounds":{"left":0.0,"top":0.42218676,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Formalize","depth":5,"bounds":{"left":0.013297873,"top":0.43335995,"width":0.016788565,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.45490822,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.4660814,"width":0.09524601,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.48922586,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"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.036070477,"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":9,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":10,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":11,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":10,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":11,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":10,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":11,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Space navigation","depth":10,"bounds":{"left":0.090259306,"top":0.15522745,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Space navigation","depth":11,"bounds":{"left":0.090259306,"top":0.15522745,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":9,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":11,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":10,"bounds":{"left":0.095578454,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":12,"bounds":{"left":0.10073138,"top":0.06344773,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":9,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Search, press enter to navigate to advanced search with your text query","depth":11,"bounds":{"left":0.40475398,"top":0.06264964,"width":0.24268617,"height":0.015961692},"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,"bounds":{"left":0.65575135,"top":0.057861134,"width":0.030086435,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.66705453,"top":0.06384677,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":12,"bounds":{"left":0.91223407,"top":0.057861134,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":14,"bounds":{"left":0.92353725,"top":0.06384677,"width":0.020611702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":12,"bounds":{"left":0.9494681,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":14,"bounds":{"left":0.954621,"top":0.06344773,"width":0.027759308,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":12,"bounds":{"left":0.96143615,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":14,"bounds":{"left":0.9665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":12,"bounds":{"left":0.9734042,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Settings","depth":14,"bounds":{"left":0.97855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":12,"bounds":{"left":0.98537236,"top":0.057861134,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"lukas.kovalik@jiminny.com","depth":14,"bounds":{"left":0.99052525,"top":0.06344773,"width":0.009474754,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":12,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":15,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":12,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":15,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":12,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":15,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":12,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":15,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":13,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Apps","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":12,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":13,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":13,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for spaces","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":17,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":20,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.032081116,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":18,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":18,"bounds":{"left":0.13646941,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create board","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":18,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Jiminny (New)","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":19,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":22,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.032247342,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":19,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":22,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.024102394,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":19,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":22,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.03125,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":19,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":22,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.050531916,"height":0.030726258},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":19,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":22,"bounds":{"left":0.1022274,"top":0.386672,"width":0.038231384,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":20,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":17,"bounds":{"left":0.08759973,"top":0.40622506,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":20,"bounds":{"left":0.09823803,"top":0.4122107,"width":0.03025266,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":18,"bounds":{"left":0.15442154,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Service-Desk","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More spaces","depth":17,"bounds":{"left":0.08759973,"top":0.43176377,"width":0.0674867,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":20,"bounds":{"left":0.09823803,"top":0.43774942,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":12,"bounds":{"left":0.08361037,"top":0.45730248,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":15,"bounds":{"left":0.09424867,"top":0.4632881,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":13,"bounds":{"left":0.15309176,"top":0.46049482,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Filters","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":12,"bounds":{"left":0.08361037,"top":0.4828412,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":15,"bounds":{"left":0.09424867,"top":0.4888268,"width":0.026761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":13,"bounds":{"left":0.15508644,"top":0.48603353,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":13,"bounds":{"left":0.16240026,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Dashboards","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":12,"bounds":{"left":0.08361037,"top":0.5083799,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":15,"bounds":{"left":0.09424867,"top":0.5143655,"width":0.02443484,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":13,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for Operations","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.5434956,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":17,"bounds":{"left":0.09424867,"top":0.5494813,"width":0.025764627,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.55706304,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":13,"bounds":{"left":0.08361037,"top":0.56903434,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":17,"bounds":{"left":0.09424867,"top":0.57501996,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":15,"bounds":{"left":0.08361037,"top":0.5826017,"width":0.04837101,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":14,"bounds":{"left":0.14378324,"top":0.57222664,"width":0.0039893617,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"open menu","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":12,"bounds":{"left":0.08361037,"top":0.60415006,"width":0.071476065,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":15,"bounds":{"left":0.09424867,"top":0.6101357,"width":0.04155585,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":13,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":13,"bounds":{"left":0.16738696,"top":0.09976058,"width":0.016289894,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":15,"bounds":{"left":0.16738696,"top":0.102553874,"width":0.016289894,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":13,"bounds":{"left":0.18683511,"top":0.102553874,"width":0.0016622341,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":13,"bounds":{"left":0.19165559,"top":0.09976058,"width":0.03174867,"height":0.01915403},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":15,"bounds":{"left":0.19165559,"top":0.102553874,"width":0.03174867,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Platform Team","depth":10,"bounds":{"left":0.16738696,"top":0.12210695,"width":0.045877658,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Platform Team","depth":11,"bounds":{"left":0.16738696,"top":0.12210695,"width":0.045877658,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Link contributing teams","depth":10,"bounds":{"left":0.21525931,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Board actions","depth":10,"bounds":{"left":0.2278923,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Board actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Share","depth":10,"bounds":{"left":0.94148934,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Automation","depth":10,"bounds":{"left":0.95478725,"top":0.118914604,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Give feedback","depth":10,"bounds":{"left":0.9680851,"top":0.118914604,"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":"Give feedback","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Enter full screen","depth":10,"bounds":{"left":0.98138297,"top":0.118914604,"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":"Enter full screen","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Summary","depth":13,"bounds":{"left":0.16472739,"top":0.14764565,"width":0.035904255,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Summary","depth":15,"bounds":{"left":0.17603059,"top":0.15363128,"width":0.021276595,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Timeline","depth":13,"bounds":{"left":0.20196144,"top":0.14764565,"width":0.03357713,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Timeline","depth":15,"bounds":{"left":0.21326463,"top":0.15363128,"width":0.018949468,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Backlog","depth":13,"bounds":{"left":0.23686835,"top":0.14764565,"width":0.032413565,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Backlog","depth":15,"bounds":{"left":0.24817154,"top":0.15363128,"width":0.017785905,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Active sprints","depth":13,"bounds":{"left":0.2706117,"top":0.14764565,"width":0.045212764,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Active sprints","depth":15,"bounds":{"left":0.2819149,"top":0.15363128,"width":0.030585106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Calendar","depth":13,"bounds":{"left":0.31715426,"top":0.14764565,"width":0.03474069,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Calendar","depth":15,"bounds":{"left":0.32845744,"top":0.15363128,"width":0.020113032,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reports","depth":13,"bounds":{"left":0.35322472,"top":0.14764565,"width":0.031914894,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reports","depth":15,"bounds":{"left":0.3645279,"top":0.15363128,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Testing Board","depth":13,"bounds":{"left":0.38646942,"top":0.14764565,"width":0.046708778,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Testing Board","depth":15,"bounds":{"left":0.3977726,"top":0.15363128,"width":0.030751329,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"List","depth":13,"bounds":{"left":0.43450797,"top":0.14764565,"width":0.02244016,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"List","depth":15,"bounds":{"left":0.44581118,"top":0.15363128,"width":0.0078125,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Forms","depth":13,"bounds":{"left":0.4582779,"top":0.14764565,"width":0.028590426,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Forms","depth":15,"bounds":{"left":0.46958113,"top":0.15363128,"width":0.013962766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Components","depth":13,"bounds":{"left":0.48819813,"top":0.14764565,"width":0.04305186,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Components","depth":15,"bounds":{"left":0.49950132,"top":0.15363128,"width":0.028424202,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Development","depth":13,"bounds":{"left":0.5325798,"top":0.14764565,"width":0.044049203,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Development","depth":15,"bounds":{"left":0.54388297,"top":0.15363128,"width":0.029421542,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Code","depth":13,"bounds":{"left":0.57795876,"top":0.14764565,"width":0.02642952,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Code","depth":15,"bounds":{"left":0.58926195,"top":0.15363128,"width":0.011801862,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Security","depth":13,"bounds":{"left":0.6057181,"top":0.14764565,"width":0.03324468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Security","depth":15,"bounds":{"left":0.61702126,"top":0.15363128,"width":0.01861702,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Releases","depth":13,"bounds":{"left":0.6402925,"top":0.14764565,"width":0.034574468,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Releases","depth":15,"bounds":{"left":0.6515958,"top":0.15363128,"width":0.019946808,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Deployments","depth":13,"bounds":{"left":0.6761968,"top":0.14764565,"width":0.043882977,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Deployments","depth":15,"bounds":{"left":0.6875,"top":0.15363128,"width":0.02925532,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Archived work items","depth":13,"bounds":{"left":0.72140956,"top":0.14764565,"width":0.06017287,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Archived work items","depth":15,"bounds":{"left":0.73271275,"top":0.15363128,"width":0.045545213,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Docs","depth":13,"bounds":{"left":0.78291225,"top":0.14764565,"width":0.025930852,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Docs","depth":15,"bounds":{"left":0.79421544,"top":0.15363128,"width":0.011303191,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Shortcuts","depth":14,"bounds":{"left":0.81017286,"top":0.14764565,"width":0.045545213,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shortcuts","depth":15,"bounds":{"left":0.8228058,"top":0.15363128,"width":0.021609042,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Slack integration","depth":13,"bounds":{"left":0.85704786,"top":0.14764565,"width":0.05319149,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Slack integration","depth":15,"bounds":{"left":0.86835104,"top":0.15363128,"width":0.03723404,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Reporting Center","depth":13,"bounds":{"left":0.9115692,"top":0.14764565,"width":0.053856384,"height":0.025538707},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reporting Center","depth":15,"bounds":{"left":0.92287236,"top":0.15363128,"width":0.037898935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add to navigation","depth":11,"bounds":{"left":0.96675533,"top":0.15083799,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"As you type to search or apply filters, the board updates with work items to match.","depth":11,"bounds":{"left":0.16738696,"top":0.20271349,"width":0.18134974,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Search on current page","depth":11,"bounds":{"left":0.17569813,"top":0.188747,"width":0.050531916,"height":0.026735835},"placeholder":"Search board","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Filter by assignee","depth":12,"bounds":{"left":0.23121676,"top":0.19034317,"width":0.03873005,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXCheckBox","text":"Filter assignees by Lukas Kovalik","depth":11,"bounds":{"left":0.23254654,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Ivanov","depth":11,"bounds":{"left":0.24052526,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Nikolov","depth":11,"bounds":{"left":0.24850398,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Nikolay Yankov","depth":11,"bounds":{"left":0.25648272,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Steliyan Georgiev","depth":11,"bounds":{"left":0.26446143,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Filter assignees by Unassigned","depth":11,"bounds":{"left":0.27244017,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"checkbox","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"Epic","depth":13,"bounds":{"left":0.28440824,"top":0.18914606,"width":0.0234375,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Epic","depth":16,"bounds":{"left":0.2883976,"top":0.19513169,"width":0.009474734,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Type","depth":13,"bounds":{"left":0.31050533,"top":0.18914606,"width":0.025099734,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Type","depth":16,"bounds":{"left":0.31449467,"top":0.19513169,"width":0.011136968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Label","depth":13,"bounds":{"left":0.3382646,"top":0.18914606,"width":0.025930852,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Label","depth":16,"bounds":{"left":0.34225398,"top":0.19513169,"width":0.011968086,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Quick filters","depth":13,"bounds":{"left":0.36685506,"top":0.18914606,"width":0.04089096,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Quick filters","depth":16,"bounds":{"left":0.37084442,"top":0.19513169,"width":0.026928192,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Complete sprint","depth":10,"bounds":{"left":0.85106385,"top":0.18914606,"width":0.04338431,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Complete sprint","depth":12,"bounds":{"left":0.8550532,"top":0.19513169,"width":0.035405584,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sprint details","depth":10,"bounds":{"left":0.8971077,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint details","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Group by Queries","depth":10,"bounds":{"left":0.9104056,"top":0.18914606,"width":0.041722074,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Group","depth":13,"bounds":{"left":0.914395,"top":0.19513169,"width":0.013796543,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":": Queries","depth":13,"bounds":{"left":0.9281915,"top":0.19513169,"width":0.019946808,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Sprint insights","depth":10,"bounds":{"left":0.95478725,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sprint insights","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View settings","depth":10,"bounds":{"left":0.9680851,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View settings","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions","depth":10,"bounds":{"left":0.98138297,"top":0.18914606,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions","depth":12,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ready For DEV","depth":16,"bounds":{"left":0.17270611,"top":0.24022347,"width":0.042220745,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"READY FOR DEV","depth":18,"bounds":{"left":0.17270611,"top":0.2406225,"width":0.03158245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":21,"bounds":{"left":0.20827793,"top":0.2406225,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.27055067,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rework Nudges - Phase 2 - change Nudges to use the indexed_at period","depth":18,"bounds":{"left":0.17303856,"top":0.28132483,"width":0.08061835,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Cost-effective and faster nudges, Edit Parent","depth":17,"bounds":{"left":0.17303856,"top":0.31843576,"width":0.076961435,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":21,"bounds":{"left":0.17436835,"top":0.3196329,"width":0.07430186,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"bounds":{"left":0.17303856,"top":0.33918595,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20489","depth":17,"bounds":{"left":0.1796875,"top":0.3651237,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20489","depth":19,"bounds":{"left":0.1796875,"top":0.36552274,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"bounds":{"left":0.24268617,"top":0.36552274,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Assignee: Nikolay Nikolov","depth":17,"bounds":{"left":0.2684508,"top":0.36193135,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.39545092,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Investigate and fix why exceed Fontawesome package limits","depth":18,"bounds":{"left":0.17303856,"top":0.40622506,"width":0.06865027,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Maintenance, Edit Parent","depth":17,"bounds":{"left":0.17303856,"top":0.44333598,"width":0.03174867,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"MAINTENANCE","depth":21,"bounds":{"left":0.17436835,"top":0.4445331,"width":0.029089095,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ready for Dev","depth":17,"bounds":{"left":0.17303856,"top":0.4640862,"width":0.031083776,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20564","depth":17,"bounds":{"left":0.1796875,"top":0.49002394,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20564","depth":19,"bounds":{"left":0.1796875,"top":0.490423,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.23371011,"top":0.490423,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"bounds":{"left":0.24052526,"top":0.4868316,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Assignee: Nikolay Yankov","depth":17,"bounds":{"left":0.2684508,"top":0.4868316,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.5203512,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Send email notification when the report is not generated","depth":18,"bounds":{"left":0.17303856,"top":0.5311253,"width":0.09125665,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit summary","depth":20,"bounds":{"left":0.20578457,"top":0.5450918,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit summary","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AJ Reports, Edit Parent","depth":17,"bounds":{"left":0.17303856,"top":0.56823623,"width":0.025930852,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AJ REPORTS","depth":21,"bounds":{"left":0.17436835,"top":0.56943333,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"bounds":{"left":0.17303856,"top":0.58898646,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20157","depth":17,"bounds":{"left":0.1796875,"top":0.6149242,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20157","depth":19,"bounds":{"left":0.1796875,"top":0.61532325,"width":0.017952127,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"bounds":{"left":0.24268617,"top":0.61532325,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Assignee: Lukas Kovalik","depth":17,"bounds":{"left":0.2684508,"top":0.6117318,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"More actions for JY-20157 Send email notification when the report is not generated","depth":17,"bounds":{"left":0.2691157,"top":0.52992815,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More actions for JY-20157 Send email notification when the report is not generated","depth":19,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.6452514,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notify a user before the AJ Report expires","depth":17,"bounds":{"left":0.17303856,"top":0.6560255,"width":0.092586435,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"bounds":{"left":0.17436835,"top":0.67797285,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"bounds":{"left":0.17303856,"top":0.6975259,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20508","depth":17,"bounds":{"left":0.1796875,"top":0.7234637,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20508","depth":19,"bounds":{"left":0.1796875,"top":0.7238627,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.24301861,"top":0.7238627,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.7537909,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sync opportunities without a local owner (user_id is null)","depth":17,"bounds":{"left":0.17303856,"top":0.76456505,"width":0.08959442,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":18,"bounds":{"left":0.17436835,"top":0.8024741,"width":0.042054523,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"bounds":{"left":0.17303856,"top":0.82202715,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20352","depth":17,"bounds":{"left":0.1796875,"top":0.8479649,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20352","depth":19,"bounds":{"left":0.1796875,"top":0.84836394,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":17,"bounds":{"left":0.24251994,"top":0.84836394,"width":0.0026595744,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.1690492,"top":0.8782921,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade BE libraries - Apr","depth":17,"bounds":{"left":0.17303856,"top":0.8890662,"width":0.057679523,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"bounds":{"left":0.17436835,"top":0.91101354,"width":0.029089095,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Backlog","depth":17,"bounds":{"left":0.17303856,"top":0.93056667,"width":0.01761968,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19957","depth":17,"bounds":{"left":0.1796875,"top":0.9565044,"width":0.017952127,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19957","depth":19,"bounds":{"left":0.1796875,"top":0.95690346,"width":0.017952127,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.24301861,"top":0.95690346,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"In DEV","depth":16,"bounds":{"left":0.29072472,"top":0.24022347,"width":0.024601065,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"IN DEV","depth":18,"bounds":{"left":0.29072472,"top":0.2406225,"width":0.013962766,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":21,"bounds":{"left":0.30884308,"top":0.2406225,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.28706783,"top":0.27055067,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Change forever nudges to 1 year expiration","depth":17,"bounds":{"left":0.29105717,"top":0.28132483,"width":0.071476065,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"COST-EFFECTIVE AND FASTER NUDGES","depth":18,"bounds":{"left":0.29238698,"top":0.31923383,"width":0.07413564,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"bounds":{"left":0.29105717,"top":0.3387869,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-9712","depth":17,"bounds":{"left":0.29770613,"top":0.36472467,"width":0.015458777,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-9712","depth":19,"bounds":{"left":0.29770613,"top":0.3651237,"width":0.015458777,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4.5","depth":17,"bounds":{"left":0.3492354,"top":0.3651237,"width":0.005984043,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"bounds":{"left":0.35854387,"top":0.36153233,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.","depth":16,"bounds":{"left":0.28706783,"top":0.39505187,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Reports > Empty page design and promotion","depth":18,"bounds":{"left":0.29105717,"top":0.40582603,"width":0.08111702,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"AJ Reports, Edit Parent","depth":17,"bounds":{"left":0.29105717,"top":0.44293696,"width":0.025930852,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AJ REPORTS","depth":21,"bounds":{"left":0.29238698,"top":0.4441341,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"bounds":{"left":0.29105717,"top":0.46368715,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20372","depth":17,"bounds":{"left":0.29770613,"top":0.4896249,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20372","depth":19,"bounds":{"left":0.29770613,"top":0.49002394,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"6","depth":17,"bounds":{"left":0.37184176,"top":0.49002394,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Assignee: Nikolay Yankov","depth":17,"bounds":{"left":0.38646942,"top":0.48643255,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.28706783,"top":0.5199521,"width":0.112034574,"height":0.1217079},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AI Review - Q1 - Summary/Action items/Key Points","depth":18,"bounds":{"left":0.29105717,"top":0.53072625,"width":0.08843085,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Growth - Maintain our competitive position, Edit Parent","depth":17,"bounds":{"left":0.29105717,"top":0.5678372,"width":0.1015625,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"GROWTH - MAINTAIN OUR COMPETITIVE POSITION","depth":21,"bounds":{"left":0.29238698,"top":0.56903434,"width":0.098902926,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In Dev","depth":17,"bounds":{"left":0.29105717,"top":0.5885874,"width":0.01462766,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20566","depth":17,"bounds":{"left":0.29770613,"top":0.61452514,"width":0.018949468,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20566","depth":19,"bounds":{"left":0.29770613,"top":0.6149242,"width":0.018949468,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":17,"bounds":{"left":0.36319813,"top":0.6149242,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Code Review","depth":16,"bounds":{"left":0.40874335,"top":0.24022347,"width":0.038896278,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"CODE REVIEW","depth":18,"bounds":{"left":0.40874335,"top":0.2406225,"width":0.02825798,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":21,"bounds":{"left":0.44148937,"top":0.2406225,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":16,"bounds":{"left":0.4010971,"top":0.25937748,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-20553 Delays in CRM Sync. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.40508643,"top":0.27055067,"width":0.112034574,"height":0.10574621},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Delays in CRM Sync","depth":18,"bounds":{"left":0.4090758,"top":0.28132483,"width":0.044215426,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Platform Stability, Edit Parent","depth":17,"bounds":{"left":0.4090758,"top":0.30247405,"width":0.044714097,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"PLATFORM STABILITY","depth":21,"bounds":{"left":0.41040558,"top":0.30367118,"width":0.042054523,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Code Review","depth":17,"bounds":{"left":0.4090758,"top":0.32322428,"width":0.028756648,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20553","depth":17,"bounds":{"left":0.41572472,"top":0.349162,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553","depth":19,"bounds":{"left":0.41572472,"top":0.34956107,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3.5","depth":17,"bounds":{"left":0.46991357,"top":0.34956107,"width":0.005984043,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"bounds":{"left":0.4792221,"top":0.34596968,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Assignee: Nikolay Nikolov","depth":17,"bounds":{"left":0.50448805,"top":0.34596968,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in Code Review","depth":16,"bounds":{"left":0.40508643,"top":0.3794892,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"bounds":{"left":0.4163896,"top":0.38707104,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Blocked","depth":16,"bounds":{"left":0.52676195,"top":0.24022347,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BLOCKED","depth":18,"bounds":{"left":0.52676195,"top":0.2406225,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in Blocked","depth":16,"bounds":{"left":0.523105,"top":0.27055067,"width":0.11186835,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"bounds":{"left":0.5344083,"top":0.27813247,"width":0.014793883,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"QA","depth":16,"bounds":{"left":0.64461434,"top":0.24022347,"width":0.016456118,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":18,"bounds":{"left":0.64461434,"top":0.2406225,"width":0.005817819,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":21,"bounds":{"left":0.65458775,"top":0.2406225,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item","depth":16,"bounds":{"left":0.6369681,"top":0.25937748,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.6409575,"top":0.27055067,"width":0.112034574,"height":0.14046289},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Part2] Automated reports with Ask Jiminny","depth":17,"bounds":{"left":0.6449468,"top":0.28132483,"width":0.07762633,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AJ REPORTS","depth":18,"bounds":{"left":0.6462766,"top":0.31923383,"width":0.023271276,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In QA","depth":17,"bounds":{"left":0.6449468,"top":0.3387869,"width":0.012799202,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AI","depth":21,"bounds":{"left":0.64660907,"top":0.35794094,"width":0.005319149,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"BE","depth":21,"bounds":{"left":0.65791225,"top":0.35794094,"width":0.005817819,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FE","depth":21,"bounds":{"left":0.6697141,"top":0.35794094,"width":0.0056515955,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"QA","depth":21,"bounds":{"left":0.68134975,"top":0.35794094,"width":0.006482713,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-18909","depth":17,"bounds":{"left":0.6515958,"top":0.38387868,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909","depth":19,"bounds":{"left":0.6515958,"top":0.38427773,"width":0.018450798,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"5","depth":17,"bounds":{"left":0.70794547,"top":0.38427773,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"bounds":{"left":0.7150931,"top":0.38068634,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item","depth":16,"bounds":{"left":0.6369681,"top":0.40303272,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.6409575,"top":0.4142059,"width":0.112034574,"height":0.10574621},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Evaluation for AI Activity Types","depth":18,"bounds":{"left":0.6449468,"top":0.42498004,"width":0.069148935,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Auto-detected activity type, Edit Parent","depth":17,"bounds":{"left":0.6449468,"top":0.4461293,"width":0.06632314,"height":0.0131683955},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AUTO-DETECTED ACTIVITY TYPE","depth":21,"bounds":{"left":0.6462766,"top":0.44732642,"width":0.063663565,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"In QA","depth":17,"bounds":{"left":0.6449468,"top":0.4668795,"width":0.012799202,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19798","depth":17,"bounds":{"left":0.6515958,"top":0.49281725,"width":0.018118352,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19798","depth":19,"bounds":{"left":0.6515958,"top":0.49321628,"width":0.018118352,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.71692157,"top":0.49321628,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"pull request","depth":16,"bounds":{"left":0.7237367,"top":0.4896249,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Create work item in QA","depth":16,"bounds":{"left":0.6409575,"top":0.5231444,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"bounds":{"left":0.65226066,"top":0.53072625,"width":0.014960106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"PO Acceptance","depth":16,"bounds":{"left":0.76263297,"top":0.24022347,"width":0.03374335,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"PO ACCEPTANCE","depth":18,"bounds":{"left":0.76263297,"top":0.2406225,"width":0.03374335,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create work item in PO Acceptance","depth":16,"bounds":{"left":0.75897604,"top":0.27055067,"width":0.112034574,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":19,"bounds":{"left":0.7702792,"top":0.27813247,"width":0.014960106,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Deploy","depth":16,"bounds":{"left":0.8806516,"top":0.24022347,"width":0.02642952,"height":0.012769354},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"DEPLOY","depth":18,"bounds":{"left":0.8806516,"top":0.2406225,"width":0.015791224,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7","depth":21,"bounds":{"left":0.9005984,"top":0.2406225,"width":0.0021609042,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.27055067,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Prepare fallback with email for SSO for `persistent` name_id_format","depth":17,"bounds":{"left":0.88098407,"top":0.28132483,"width":0.08510638,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"REDUCE CHURN","depth":18,"bounds":{"left":0.88231385,"top":0.31923383,"width":0.029753989,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closed","depth":17,"bounds":{"left":0.88098407,"top":0.3387869,"width":0.015292553,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20632","depth":17,"bounds":{"left":0.88763297,"top":0.36472467,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20632","depth":19,"bounds":{"left":0.88763297,"top":0.3651237,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.9416556,"top":0.3651237,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"bounds":{"left":0.9484708,"top":0.36153233,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.39505187,"width":0.112034574,"height":0.14046289},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"AJ Panorama> Don't show internal errors to customers","depth":17,"bounds":{"left":0.88098407,"top":0.40582603,"width":0.09075798,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ASK ANYTHING ON ANYTHING","depth":18,"bounds":{"left":0.88231385,"top":0.44373503,"width":0.05851064,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"bounds":{"left":0.88098407,"top":0.4632881,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Prophet","depth":21,"bounds":{"left":0.88264626,"top":0.48244214,"width":0.017287234,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20278","depth":17,"bounds":{"left":0.88763297,"top":0.5083799,"width":0.018783245,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20278","depth":19,"bounds":{"left":0.88763297,"top":0.5087789,"width":0.018783245,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.9416556,"top":0.5087789,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"bounds":{"left":0.9484708,"top":0.5051876,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.5387071,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Upgrade Python and libraries - Apr","depth":17,"bounds":{"left":0.88098407,"top":0.5494813,"width":0.07679521,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"MAINTENANCE","depth":18,"bounds":{"left":0.88231385,"top":0.5714286,"width":0.029089095,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"bounds":{"left":0.88098407,"top":0.59098166,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-19967","depth":17,"bounds":{"left":0.88763297,"top":0.6169194,"width":0.018118352,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-19967","depth":19,"bounds":{"left":0.88763297,"top":0.61731845,"width":0.018118352,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.94431514,"top":0.61731845,"width":0.0016622341,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Successful deployment to production.","depth":16,"bounds":{"left":0.95113033,"top":0.61372703,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.6472466,"width":0.112034574,"height":0.121308856},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"CLONE - [Team insights] Filter gets reset automatically","depth":17,"bounds":{"left":0.88098407,"top":0.65802073,"width":0.08992686,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"bounds":{"left":0.88231385,"top":0.69592977,"width":0.035738032,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"bounds":{"left":0.88098407,"top":0.71548283,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20681","depth":17,"bounds":{"left":0.88763297,"top":0.74142057,"width":0.018284574,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20681","depth":19,"bounds":{"left":0.88763297,"top":0.7418196,"width":0.018284574,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0.5","depth":17,"bounds":{"left":0.9459774,"top":0.7418196,"width":0.005817819,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"bounds":{"left":0.95511967,"top":0.73822826,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.7717478,"width":0.112034574,"height":0.105347164},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Issue with reconnecting Zoho","depth":17,"bounds":{"left":0.88098407,"top":0.78252196,"width":0.06582447,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"bounds":{"left":0.88231385,"top":0.8044693,"width":0.035738032,"height":0.011173184},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"bounds":{"left":0.88098407,"top":0.82402235,"width":0.020944148,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20692","depth":17,"bounds":{"left":0.88763297,"top":0.8499601,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20692","depth":19,"bounds":{"left":0.88763297,"top":0.85035914,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":17,"bounds":{"left":0.95262635,"top":0.85035914,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"bounds":{"left":0.95977396,"top":0.8467678,"width":0.007978723,"height":0.01915403},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.8802873,"width":0.112034574,"height":0.10215483},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Tech Day] Improve Dependabot Bot & Experiment with Github Actions","depth":17,"bounds":{"left":0.88098407,"top":0.8910614,"width":0.0852726,"height":0.029928172},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Closed","depth":17,"bounds":{"left":0.88098407,"top":0.9293695,"width":0.015292553,"height":0.01396648},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20696","depth":17,"bounds":{"left":0.88763297,"top":0.95530725,"width":0.019115692,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20696","depth":19,"bounds":{"left":0.88763297,"top":0.9557063,"width":0.019115692,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"0","depth":17,"bounds":{"left":0.95861036,"top":0.9557063,"width":0.002493351,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.","depth":16,"bounds":{"left":0.87699467,"top":0.9856345,"width":0.112034574,"height":0.014365494},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Les Mills activity types not pulling in","depth":17,"bounds":{"left":0.88098407,"top":0.99640864,"width":0.079288565,"height":0.0035913587},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SUPPORT TICKETS","depth":18,"bounds":{"left":0.88231385,"top":1.0,"width":0.035738032,"height":-0.018355966},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Deployed","depth":17,"bounds":{"left":0.88098407,"top":1.0,"width":0.020944148,"height":-0.03790903},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"JY-20698","depth":17,"bounds":{"left":0.88763297,"top":1.0,"width":0.019115692,"height":-0.06384683},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698","depth":19,"bounds":{"left":0.88763297,"top":1.0,"width":0.019115692,"height":-0.06424582},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":17,"bounds":{"left":0.95295876,"top":1.0,"width":0.0016622341,"height":-0.06424582},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"merged pull request","depth":16,"bounds":{"left":0.95977396,"top":1.0,"width":0.007978723,"height":-0.0606544},"role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Rovo Chat","depth":9,"bounds":{"left":0.97606385,"top":0.9425379,"width":0.015957447,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Open Rovo Chat","depth":11,"bounds":{"left":0.98387635,"top":0.9612929,"width":0.016123652,"height":0.0131683955},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Send email notification when the report is not generated","depth":10,"bounds":{"left":0.1818484,"top":0.5718276,"width":0.07413564,"height":0.024740623},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9103548171263100239
|
1346975016245512407
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
[JY-20372] AI Reports > Empty page design and promotion - Jira
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Project Phoenix – Figma
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
Jiminny Mail
Jiminny Mail
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Pipelines - jiminny/app
Pipelines - jiminny/app
Formalize
Formalize
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Space navigation
Space navigation
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
Notifications
Notifications
Help
Help
Settings
Settings
[EMAIL]
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Apps
Apps
More actions for Apps
More actions for Apps
Spaces
Spaces
Create space
Create space
More actions for spaces
More actions for spaces
Recent
Jiminny (New)
Jiminny (New)
Jiminny (New)
Create board
Create board
More actions for Jiminny (New)
More actions for Jiminny (New)
Platform Team
Platform Team
Board actions
Board actions
SE Kanban
SE Kanban
Board actions
Board actions
Capture Team
Capture Team
Board actions
Board actions
Enterprise Stability Issues 🤕
Enterprise Stability Issues 🤕
Board actions
Board actions
Processing Team
Processing Team
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New)
Jiminny (New)
Platform Team
Platform Team
Link contributing teams
Board actions
Board actions
Share
Automation
Give feedback
Give feedback
Enter full screen
Enter full screen
Summary
Summary
Timeline
Timeline
Backlog
Backlog
Active sprints
Active sprints
Calendar
Calendar
Reports
Reports
Testing Board
Testing Board
List
List
Forms
Forms
Components
Components
Development
Development
Code
Code
Security
Security
Releases
Releases
Deployments
Deployments
Archived work items
Archived work items
Docs
Docs
Shortcuts
Shortcuts
Slack integration
Slack integration
Reporting Center
Reporting Center
Add to navigation
As you type to search or apply filters, the board updates with work items to match.
Search on current page
Filter by assignee
Filter assignees by Lukas Kovalik
Filter assignees by Nikolay Ivanov
Filter assignees by Nikolay Nikolov
Filter assignees by Nikolay Yankov
Filter assignees by Steliyan Georgiev
Filter assignees by Unassigned
Epic
Epic
Type
Type
Label
Label
Quick filters
Quick filters
Complete sprint
Complete sprint
Sprint details
Sprint details
Group by Queries
Group
: Queries
Sprint insights
Sprint insights
View settings
View settings
More actions
More actions
Ready For DEV
READY FOR DEV
6
JY-20489 Rework Nudges - Phase 2 - change Nudges to use the indexed_at period. Use the enter key to load the work item.
Rework Nudges - Phase 2 - change Nudges to use the indexed_at period
Cost-effective and faster nudges, Edit Parent
COST-EFFECTIVE AND FASTER NUDGES
Backlog
JY-20489
JY-20489
5
Assignee: Nikolay Nikolov
JY-20564 Investigate and fix why exceed Fontawesome package limits. Use the enter key to load the work item.
Investigate and fix why exceed Fontawesome package limits
Maintenance, Edit Parent
MAINTENANCE
Ready for Dev
JY-20564
JY-20564
1
pull request
Assignee: Nikolay Yankov
JY-20157 Send email notification when the report is not generated. Use the enter key to load the work item.
Send email notification when the report is not generated
Edit summary
Edit summary
AJ Reports, Edit Parent
AJ REPORTS
Backlog
JY-20157
JY-20157
2
Assignee: Lukas Kovalik
More actions for JY-20157 Send email notification when the report is not generated
More actions for JY-20157 Send email notification when the report is not generated
JY-20508 Notify a user before the AJ Report expires. Use the enter key to load the work item.
Notify a user before the AJ Report expires
AJ REPORTS
Backlog
JY-20508
JY-20508
1
JY-20352 Sync opportunities without a local owner (user_id is null). Use the enter key to load the work item.
Sync opportunities without a local owner (user_id is null)
PLATFORM STABILITY
Backlog
JY-20352
JY-20352
4
JY-19957 Upgrade BE libraries - Apr. Use the enter key to load the work item.
Upgrade BE libraries - Apr
MAINTENANCE
Backlog
JY-19957
JY-19957
1
In DEV
IN DEV
3
JY-9712 Change forever nudges to 1 year expiration. Use the enter key to load the work item.
Change forever nudges to 1 year expiration
COST-EFFECTIVE AND FASTER NUDGES
In Dev
JY-9712
JY-9712
4.5
pull request
JY-20372 AI Reports > Empty page design and promotion . Use the enter key to load the work item.
AI Reports > Empty page design and promotion
AJ Reports, Edit Parent
AJ REPORTS
In Dev
JY-20372
JY-20372
6
Assignee: Nikolay Yankov
JY-20566 AI Review - Q1 - Summary/Action items/Key Points. Use the enter key to load the work item.
AI Review - Q1 - Summary/Action items/Key Points
Growth - Maintain our competitive position, Edit Parent
GROWTH - MAINTAIN OUR COMPETITIVE POSITION
In Dev
JY-20566
JY-20566
3
Code Review
CODE REVIEW
1
Create work item
JY-20553 Delays in CRM Sync. Use the enter key to load the work item.
Delays in CRM Sync
Platform Stability, Edit Parent
PLATFORM STABILITY
Code Review
JY-20553
JY-20553
3.5
merged pull request
Assignee: Nikolay Nikolov
Create work item in Code Review
Create
Blocked
BLOCKED
Create work item in Blocked
Create
QA
QA
2
Create work item
JY-18909 [Part2] Automated reports with Ask Jiminny. Use the enter key to load the work item.
[Part2] Automated reports with Ask Jiminny
AJ REPORTS
In QA
AI
BE
FE
QA
JY-18909
JY-18909
5
pull request
Create work item
JY-19798 Evaluation for AI Activity Types. Use the enter key to load the work item.
Evaluation for AI Activity Types
Auto-detected activity type, Edit Parent
AUTO-DETECTED ACTIVITY TYPE
In QA
JY-19798
JY-19798
1
pull request
Create work item in QA
Create
PO Acceptance
PO ACCEPTANCE
Create work item in PO Acceptance
Create
Deploy
DEPLOY
7
JY-20632 Prepare fallback with email for SSO for `persistent` name_id_format. Use the enter key to load the work item.
Prepare fallback with email for SSO for `persistent` name_id_format
REDUCE CHURN
Closed
JY-20632
JY-20632
1
merged pull request
JY-20278 AJ Panorama> Don't show internal errors to customers. Use the enter key to load the work item.
AJ Panorama> Don't show internal errors to customers
ASK ANYTHING ON ANYTHING
Deployed
Prophet
JY-20278
JY-20278
1
Successful deployment to production.
JY-19967 Upgrade Python and libraries - Apr. Use the enter key to load the work item.
Upgrade Python and libraries - Apr
MAINTENANCE
Deployed
JY-19967
JY-19967
1
Successful deployment to production.
JY-20681 CLONE - [Team insights] Filter gets reset automatically. Use the enter key to load the work item.
CLONE - [Team insights] Filter gets reset automatically
SUPPORT TICKETS
Deployed
JY-20681
JY-20681
0.5
merged pull request
JY-20692 Issue with reconnecting Zoho. Use the enter key to load the work item.
Issue with reconnecting Zoho
SUPPORT TICKETS
Deployed
JY-20692
JY-20692
2
merged pull request
JY-20696 [Tech Day] Improve Dependabot Bot & Experiment with Github Actions. Use the enter key to load the work item.
[Tech Day] Improve Dependabot Bot & Experiment with Github Actions
Closed
JY-20696
JY-20696
0
JY-20698 Les Mills activity types not pulling in. Use the enter key to load the work item.
Les Mills activity types not pulling in
SUPPORT TICKETS
Deployed
JY-20698
JY-20698
1
merged pull request
Open Rovo Chat
Open Rovo Chat
Send email notification when the report is not generated...
|
64093
|
|
21686
|
477
|
55
|
2026-04-15T10:16:15.867974+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776248175867_m2.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
10023210020017/25Dark Age--Villager Created-Game P 10023210020017/25Dark Age--Villager Created-Game Paused (P)Click to select this villager.CowУлaжcikovalfklukas (Britons)15014/146 Mindaugas: 408/4082 Anccu Hualloc: 407/4073 Bird Jaguar: 394/3944 Siddhraj Jaisingh: 393/3931 kovaliklukas: 390/3908 Ashikaga Takauji: 387/3875 Honorius: 366/3667 Basil the Macedonian: 358/358...
|
NULL
|
9103499283616538531
|
NULL
|
click
|
ocr
|
NULL
|
10023210020017/25Dark Age--Villager Created-Game P 10023210020017/25Dark Age--Villager Created-Game Paused (P)Click to select this villager.CowУлaжcikovalfklukas (Britons)15014/146 Mindaugas: 408/4082 Anccu Hualloc: 407/4073 Bird Jaguar: 394/3944 Siddhraj Jaisingh: 393/3931 kovaliklukas: 390/3908 Ashikaga Takauji: 387/3875 Honorius: 366/3667 Basil the Macedonian: 358/358...
|
21684
|
|
47137
|
993
|
14
|
2026-04-17T11:11:05.256791+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776424265256_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpalo)Support Daily - in 49 m-zshAPP (-zsh)|X4-zsh100% <47• ₴78Fri 17 Apr 14:11:041₴81ec2-user@ip-10-...• 88DOCKER• ₴1DEV (docker)O ₴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.62kBmар: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
|
9102786027026212787
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelpalo)Support Daily - in 49 m-zshAPP (-zsh)|X4-zsh100% <47• ₴78Fri 17 Apr 14:11:041₴81ec2-user@ip-10-...• 88DOCKER• ₴1DEV (docker)O ₴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.62kBmар: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...
|
47135
|
|
64421
|
1425
|
11
|
2026-04-21T11:12:06.160997+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776769926160_m1.jpg...
|
PhpStorm
|
faVsco.js – RequestGenerateAskJiminnyReportJobTest faVsco.js – RequestGenerateAskJiminnyReportJobTest.php...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEdit→ViewHistoryBookmarksProfilesToolsW FirefoxFileEdit→ViewHistoryBookmarksProfilesToolsWindowHelp• Not Securehttp://[IP_ADDRESS]:8766# Support Daily - in 48 m100% <78Tue 21 Apr 14:12:05=Screenpipe (archive.db - 3037.7MB]ActivitySearchAudioWork ReportAl SummaryDate20 / 04 / 2026 0Western Digital Red Plus 3.5 6TB 5400rpm 256MB SASQLite Web: db.sqliteScreenpipe - Archive100.73.206.126:8768/Today's DealsShameless • HBO Maxinstall screenpipe - screenpipe docsNew TabScreenpipe - ArchiveX@ SQLite Web: db.sqliteClaude Platform+ New TabNo session dataFRAMESAPPSUI EVENTSAUDIOACTIVE PERIOD (TIMES IN LOCAL TIMEZONE)TIME PER APP - CLICK TO FILTER ALL PANELS BY APPWebsitesWindowsUI EventsNo dataNo browser URLs...
|
NULL
|
9102619703363589621
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEdit→ViewHistoryBookmarksProfilesToolsW FirefoxFileEdit→ViewHistoryBookmarksProfilesToolsWindowHelp• Not Securehttp://[IP_ADDRESS]:8766# Support Daily - in 48 m100% <78Tue 21 Apr 14:12:05=Screenpipe (archive.db - 3037.7MB]ActivitySearchAudioWork ReportAl SummaryDate20 / 04 / 2026 0Western Digital Red Plus 3.5 6TB 5400rpm 256MB SASQLite Web: db.sqliteScreenpipe - Archive100.73.206.126:8768/Today's DealsShameless • HBO Maxinstall screenpipe - screenpipe docsNew TabScreenpipe - ArchiveX@ SQLite Web: db.sqliteClaude Platform+ New TabNo session dataFRAMESAPPSUI EVENTSAUDIOACTIVE PERIOD (TIMES IN LOCAL TIMEZONE)TIME PER APP - CLICK TO FILTER ALL PANELS BY APPWebsitesWindowsUI EventsNo dataNo browser URLs...
|
64420
|
|
60886
|
1313
|
23
|
2026-04-21T06:24:18.762656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-21/1776 /Users/lukas/.screenpipe/data/data/2026-04-21/1776752658762_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.jiminny.com/dashboard
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Mail
mail.google.com
Platform Sprint 2 Q2 Jiminny Mail
mail.google.com
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - 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
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
Close tab
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
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
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
3
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
3
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Marin Nedevski at Reward Gateway
Jheelam Ghosh and Lauren Hudson
Jheelam Ghosh and Lauren Hudson
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Diane Farah at Flosonics Medical
Meeting with Stoyan 🚀 (Diane Farah)
Meeting with Stoyan 🚀 (Diane Farah)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
James Casey at Referoo
Notetaker added by Oliver Harris
Notetaker added by Oliver Harris
1
times played
Live Feed
Live Feed
Stoyan Tanev
listened to call
Yesterday, 5:28 PM
Support / Troubleshooting
with
Diane Farah
Held:
17 Apr, 4:58 PM
Duration:
7m
Value:
$22,656
Lauren Hudson
listened to call
Yesterday, 5:16 PM
Kick-Off / Onboarding
with
Todd Upchurch
Held:
8 Apr, 4:28 PM
Duration:
33m
Value:
$4,800
Becky Butler
listened to call
Yesterday, 4:43 PM
Disco/Demo
with
Graeme Hennessey
Held:
10 Apr, 5:29 PM
Duration:
31m
Value:
$19,716
Calum Scott
listened to call
Yesterday, 3:17 PM
Trial Strategy Session
with
James Casey
Held:
24 Mar, 4:34 PM
Duration:
22m
Value:
$9,600
Calum Scott
listened to call
Yesterday, 3:14 PM
Kick-Off / Onboarding
with
unknown customer
Held:
16 Mar, 6:03 PM
Duration:
28m
Value:
$0
Calum Scott
listened to call
Yesterday, 3:08 PM
End of Trial check in
with
James Casey
Held:
7 Apr, 11:37 AM
Duration:
19m
Value:
$9,600
Becky Butler
listened to call
Yesterday, 12:03 PM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Oliver Harris
listened to call
Yesterday, 12:02 PM
Support / Troubleshooting
with
Marin Nedevski
Held:
9 Apr, 12:28 PM
Duration:
29m
Value:
$0
Gabriela Dureva
listened to call
Yesterday, 11:42 AM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Calum Scott
listened to call
17 Apr, 7:26 PM
Proposal / Next Steps
with
Holger Marggraf
Held:
20 Feb, 11:00 AM
Duration:
42m
Value:
€0
Becky Butler
listened to call
17 Apr, 3:41 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Oliver Harris
listened to call
17 Apr, 3:34 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Petko Kashinski
listened to call
17 Apr, 10:01 AM
cold call
with
unknown customer
Held:
16 Apr, 4:35 PM
Duration:
1m
Value:
$0
Petko Kashinski
listened to call
17 Apr, 9:43 AM
Refresher Session
with
Melanie Yu Yu
Held:
9 Apr, 5:58 PM
Duration:
30m
Value:
$0
Zornitsa Dzhongova
listened to call
16 Apr, 4:16 PM
Discovery Call (upsell)
with
Oscar Linares
Held:
15 Apr, 3:30 PM
Duration:
32m
Value:
$11,875
Mario Georgiev
listened to call
16 Apr, 2:59 PM
Support / Troubleshooting
with
Adriana Voyce
Held:
15 Apr, 7:28 PM
Duration:
31m
Value:
£13,063
Greg Moser
listened to call
16 Apr, 12:33 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Becky Butler
listened to call
16 Apr, 12:02 PM
Trial Strategy Session
with
Scott Ferguson
Held:
30 Mar, 5:30 PM
Duration:
18m
Value:
$11,820
Greg Moser
listened to call
15 Apr, 6:54 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Greg Moser
listened to call
15 Apr, 6:34 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Open Intercom Messenger...
|
[{"role":"AXStaticText","text& [{"role":"AXStaticText","text":"Jiminny Mail","depth":4,"bounds":{"left":0.08361037,"top":0.26576218,"width":0.022606382,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"mail.google.com","depth":4,"bounds":{"left":0.08361037,"top":0.27653632,"width":0.028590426,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.07596409,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.08344415,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6787] Issue with reconnecting Zoho - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.08344415,"height":0.010774142},"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,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20698 handle failed field sync on playbook import activity types by LakyLak · Pull Request #11988 · jiminny/app","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.19963431,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny MCP Connector - Product - Confluence","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny MCP Connector - Product - Confluence","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.08294548,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":4,"bounds":{"left":0.0,"top":0.22585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.23703113,"width":0.15791224,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny Mail","depth":4,"bounds":{"left":0.0,"top":0.2585794,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Mail","depth":5,"bounds":{"left":0.013297873,"top":0.2697526,"width":0.02144282,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.26576218,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":4,"bounds":{"left":0.0,"top":0.29130086,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-20500] Batch initial sync for Salesforce - Jira","depth":5,"bounds":{"left":0.013297873,"top":0.30247405,"width":0.08610372,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.32402235,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.013297873,"top":0.33519554,"width":0.042719416,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.3567438,"width":0.07962101,"height":0.032721467},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.013297873,"top":0.367917,"width":0.013131649,"height":0.010774142},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.3639266,"width":0.007978723,"height":0.01915403},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.39106146,"width":0.07413564,"height":0.025538707},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"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.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"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.036070477,"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.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"1","depth":12,"bounds":{"left":0.08228058,"top":0.91380686,"width":0.015957447,"height":0.035115723},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":14,"bounds":{"left":0.091755316,"top":0.9173983,"width":0.0023271276,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"My Recordings","depth":14,"bounds":{"left":0.15209441,"top":0.07182761,"width":0.061336435,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"My Recordings","depth":15,"bounds":{"left":0.1653923,"top":0.0905826,"width":0.03474069,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Team Recordings","depth":14,"bounds":{"left":0.21343085,"top":0.07182761,"width":0.065990694,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Team Recordings","depth":15,"bounds":{"left":0.22672872,"top":0.0905826,"width":0.03939495,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Everyone's Recordings","depth":14,"bounds":{"left":0.27942154,"top":0.07182761,"width":0.0787899,"height":0.052673582},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Everyone's Recordings","depth":15,"bounds":{"left":0.29271942,"top":0.0905826,"width":0.05219415,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":19,"bounds":{"left":0.14079122,"top":0.14604948,"width":0.04155585,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added on 05-15-23 @ 20:45","depth":19,"bounds":{"left":0.14079122,"top":0.16679968,"width":0.079953454,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 May, 2023, 8:47 PM","depth":18,"bounds":{"left":0.14079122,"top":0.18754987,"width":0.047706116,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Schedule","depth":13,"bounds":{"left":0.40608376,"top":0.27214685,"width":0.029421542,"height":0.025538707},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Schedule","depth":14,"bounds":{"left":0.40608376,"top":0.27414206,"width":0.029421542,"height":0.021548284},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Invite Notetaker","depth":14,"bounds":{"left":0.6505984,"top":0.2697526,"width":0.044215426,"height":0.028731046},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"This Week","depth":14,"bounds":{"left":0.41107047,"top":0.31763768,"width":0.1377992,"height":0.02952913},"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":17,"bounds":{"left":0.4147274,"top":0.3256185,"width":0.021941489,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"My Schedule","depth":14,"bounds":{"left":0.5521942,"top":0.31763768,"width":0.13763298,"height":0.02952913},"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":17,"bounds":{"left":0.55585104,"top":0.3256185,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Meetings","depth":16,"bounds":{"left":0.53723407,"top":0.69193935,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Trending this month","depth":13,"bounds":{"left":0.41107047,"top":0.08858739,"width":0.04637633,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trending this month","depth":14,"bounds":{"left":0.41107047,"top":0.0905826,"width":0.04637633,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Sort by Sort by: Most played","depth":13,"bounds":{"left":0.62117684,"top":0.08339984,"width":0.06865027,"height":0.02952913},"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":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"bounds":{"left":0.62483376,"top":0.091380686,"width":0.016954787,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most played","depth":15,"bounds":{"left":0.64178854,"top":0.091380686,"width":0.026097074,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Miles Weeks at Cloud Gateway","depth":16,"bounds":{"left":0.51379657,"top":0.18036711,"width":0.06665558,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Miles Weeks and Zornitsa Dzhongova","depth":15,"bounds":{"left":0.5069814,"top":0.1991221,"width":0.08693484,"height":0.011971269},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Miles Weeks and Zornitsa Dzhongova","depth":16,"bounds":{"left":0.5169548,"top":0.1991221,"width":0.06698803,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"bounds":{"left":0.55136305,"top":0.2150838,"width":0.0051529254,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"bounds":{"left":0.54105717,"top":0.23144454,"width":0.01861702,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":16,"bounds":{"left":0.813996,"top":0.18036711,"width":0.04338431,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steve Lazarus and Greg Moser","depth":15,"bounds":{"left":0.80202794,"top":0.1991221,"width":0.07396942,"height":0.011971269},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steve Lazarus and Greg Moser","depth":16,"bounds":{"left":0.81200135,"top":0.1991221,"width":0.054022606,"height":0.011971269},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"bounds":{"left":0.83992684,"top":0.2150838,"width":0.0051529254,"height":0.019553073},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"bounds":{"left":0.829621,"top":0.23144454,"width":0.01861702,"height":0.009976057},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"bounds":{"left":1.0,"top":0.17996807,"width":-0.07014632,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meet with Becky from Jiminny 🚀","depth":15,"bounds":{"left":1.0,"top":0.19872306,"width":-0.08809841,"height":0.012769354},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meet with Becky from Jiminny 🚀","depth":16,"bounds":{"left":1.0,"top":0.19872306,"width":-0.09807181,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Todd Upchurch at LeadVenture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - sync (Lauren & Todd)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - sync (Lauren & Todd)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"David Roberts at Sigma Labs","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tony Lombardo at AutoLeap","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tom Daniels at Worldover","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Worldover Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Worldover Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Will Pagden at Rosterfy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rosterfy & Jiminny [Intro call]","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rosterfy & Jiminny [Intro call]","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Marin Nedevski at Reward Gateway","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jheelam Ghosh and Lauren Hudson","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jheelam Ghosh and Lauren Hudson","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alex Bogumil at Cognitive Credit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alex & Gabby Jiminny Customisations Alignment","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alex & Gabby Jiminny Customisations Alignment","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Phil Hart at Oxford Medical Simulation","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Oliver from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Oliver from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melanie Yu Yu at Unibuddy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Philipp Kronsteiner at DocPlanner","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Johnathan Berryman at INSURITAS","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kerensa Martin at CreateFuture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny x CF - Connect to Jiminny :)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x CF - Connect to Jiminny :)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jack Wilson at Akixi","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kelly Atkins at BT Local Business Severnside","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BT Coventry & Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BT Coventry & Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rachel Hand at Storage King","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zilch","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adriana Voyce at Credentially","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diane Farah at Flosonics Medical","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Stoyan 🚀 (Diane Farah)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Stoyan 🚀 (Diane Farah)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melissa Desousa at Lloyd's List Intelligence","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Melissa De Sousa and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Melissa De Sousa and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oscar Linares at Storyclash GmbH","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Oscar Linares and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Oscar Linares and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey at Referoo","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Notetaker added by Oliver Harris","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notetaker added by Oliver Harris","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Live Feed","depth":13,"bounds":{"left":0.70644945,"top":0.08858739,"width":0.021775266,"height":0.01915403},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Live Feed","depth":14,"bounds":{"left":0.70644945,"top":0.0905826,"width":0.021775266,"height":0.01556265},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":21,"bounds":{"left":0.7280585,"top":0.14086193,"width":0.027426861,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7571476,"top":0.14086193,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 5:28 PM","depth":20,"bounds":{"left":0.94414896,"top":0.14046289,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support / Troubleshooting","depth":23,"bounds":{"left":0.7280585,"top":0.17158818,"width":0.05435505,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.7834109,"top":0.17158818,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Diane Farah","depth":23,"bounds":{"left":0.7933843,"top":0.17158818,"width":0.025099734,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.20909816,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 4:58 PM","depth":22,"bounds":{"left":0.74667555,"top":0.20909816,"width":0.030418882,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.8507314,"top":0.20909816,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7m","depth":22,"bounds":{"left":0.8700133,"top":0.20909816,"width":0.005984043,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.9496343,"top":0.20909816,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$22,656","depth":22,"bounds":{"left":0.9624335,"top":0.20909816,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lauren Hudson","depth":21,"bounds":{"left":0.7280585,"top":0.25418994,"width":0.03158245,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7613032,"top":0.25418994,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 5:16 PM","depth":20,"bounds":{"left":0.94414896,"top":0.25379092,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kick-Off / Onboarding","depth":23,"bounds":{"left":0.7280585,"top":0.2849162,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77543217,"top":0.2849162,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Todd Upchurch","depth":23,"bounds":{"left":0.7854056,"top":0.2849162,"width":0.031416222,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.32242617,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"8 Apr, 4:28 PM","depth":22,"bounds":{"left":0.74667555,"top":0.32242617,"width":0.027925532,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.84956783,"top":0.32242617,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"33m","depth":22,"bounds":{"left":0.8686835,"top":0.32242617,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.95212764,"top":0.32242617,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$4,800","depth":22,"bounds":{"left":0.96492684,"top":0.32242617,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":21,"bounds":{"left":0.7280585,"top":0.36751795,"width":0.026761968,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7564827,"top":0.36751795,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 4:43 PM","depth":20,"bounds":{"left":0.94414896,"top":0.36711892,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Disco/Demo","depth":23,"bounds":{"left":0.7280585,"top":0.3982442,"width":0.025930852,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.75482047,"top":0.3982442,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey","depth":23,"bounds":{"left":0.7647939,"top":0.3982442,"width":0.040226065,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.43575418,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"10 Apr, 5:29 PM","depth":22,"bounds":{"left":0.74667555,"top":0.43575418,"width":0.030418882,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.84956783,"top":0.43575418,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31m","depth":22,"bounds":{"left":0.8686835,"top":0.43575418,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.9496343,"top":0.43575418,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$19,716","depth":22,"bounds":{"left":0.9624335,"top":0.43575418,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.48084596,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.48084596,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:17 PM","depth":20,"bounds":{"left":0.94414896,"top":0.48044693,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trial Strategy Session","depth":23,"bounds":{"left":0.7280585,"top":0.51157224,"width":0.04438165,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77327126,"top":0.51157224,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey","depth":23,"bounds":{"left":0.78324467,"top":0.51157224,"width":0.02642952,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.5490822,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24 Mar, 4:34 PM","depth":22,"bounds":{"left":0.74667555,"top":0.5490822,"width":0.03125,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.85123,"top":0.5490822,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22m","depth":22,"bounds":{"left":0.8703458,"top":0.5490822,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.95212764,"top":0.5490822,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$9,600","depth":22,"bounds":{"left":0.96492684,"top":0.5490822,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.59417397,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.59417397,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:14 PM","depth":20,"bounds":{"left":0.94414896,"top":0.5937749,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kick-Off / Onboarding","depth":23,"bounds":{"left":0.7280585,"top":0.6249002,"width":0.04654255,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77543217,"top":0.6249002,"width":0.009142287,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"bounds":{"left":0.7854056,"top":0.6249002,"width":0.040059842,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.6624102,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Mar, 6:03 PM","depth":22,"bounds":{"left":0.74667555,"top":0.6624102,"width":0.03125,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.85538566,"top":0.6624102,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28m","depth":22,"bounds":{"left":0.8746675,"top":0.6624102,"width":0.008477394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.960605,"top":0.6624102,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"bounds":{"left":0.9734042,"top":0.6624102,"width":0.004986702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"bounds":{"left":0.7280585,"top":0.707502,"width":0.025265958,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7549867,"top":0.707502,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 3:08 PM","depth":20,"bounds":{"left":0.94414896,"top":0.70710295,"width":0.039228722,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"End of Trial check in","depth":23,"bounds":{"left":0.7280585,"top":0.73822826,"width":0.04105718,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.77011305,"top":0.73822826,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"James Casey","depth":23,"bounds":{"left":0.78008646,"top":0.73822826,"width":0.026263298,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.77573824,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 Apr, 11:37 AM","depth":22,"bounds":{"left":0.74667555,"top":0.77573824,"width":0.030751329,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.8508976,"top":0.77573824,"width":0.01861702,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"19m","depth":22,"bounds":{"left":0.87017953,"top":0.77573824,"width":0.008477394,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.95212764,"top":0.77573824,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$9,600","depth":22,"bounds":{"left":0.96492684,"top":0.77573824,"width":0.013464096,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":21,"bounds":{"left":0.7280585,"top":0.82083,"width":0.026761968,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.7564827,"top":0.82083,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 12:03 PM","depth":20,"bounds":{"left":0.94148934,"top":0.820431,"width":0.041888297,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Decision / Closing","depth":23,"bounds":{"left":0.7280585,"top":0.85155624,"width":0.036901597,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.7659575,"top":0.85155624,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hakeem Oloritun","depth":23,"bounds":{"left":0.7759308,"top":0.85155624,"width":0.036070477,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":0.8890662,"width":0.010305851,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28 Jan, 6:00 PM","depth":22,"bounds":{"left":0.74667555,"top":0.8890662,"width":0.03025266,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.8494016,"top":0.8890662,"width":0.018450798,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27m","depth":22,"bounds":{"left":0.8685173,"top":0.8890662,"width":0.008643617,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.9496343,"top":0.8890662,"width":0.012134309,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$34,877","depth":22,"bounds":{"left":0.9624335,"top":0.8890662,"width":0.015957447,"height":0.012769354},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oliver Harris","depth":21,"bounds":{"left":0.7280585,"top":0.934158,"width":0.026928192,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.75664896,"top":0.934158,"width":0.02925532,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 12:02 PM","depth":20,"bounds":{"left":0.94148934,"top":0.933759,"width":0.041888297,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support / Troubleshooting","depth":23,"bounds":{"left":0.7280585,"top":0.9648843,"width":0.05435505,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.7834109,"top":0.9648843,"width":0.008976064,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Marin Nedevski","depth":23,"bounds":{"left":0.7933843,"top":0.9648843,"width":0.032912236,"height":0.013567438},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"bounds":{"left":0.7357048,"top":1.0,"width":0.010305851,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Apr, 12:28 PM","depth":22,"bounds":{"left":0.74667555,"top":1.0,"width":0.030418882,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"bounds":{"left":0.85488695,"top":1.0,"width":0.01861702,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"29m","depth":22,"bounds":{"left":0.8741689,"top":1.0,"width":0.008477394,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"bounds":{"left":0.960605,"top":1.0,"width":0.012134309,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"bounds":{"left":0.9734042,"top":1.0,"width":0.004986702,"height":-0.0023941994},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":21,"bounds":{"left":0.7280585,"top":1.0,"width":0.034075797,"height":-0.047486067},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"bounds":{"left":0.76379657,"top":1.0,"width":0.02925532,"height":-0.047486067},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Yesterday, 11:42 AM","depth":20,"bounds":{"left":0.9411569,"top":1.0,"width":0.042220745,"height":-0.047086954},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Decision / Closing","depth":23,"bounds":{"left":0.7280585,"top":1.0,"width":0.036901597,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"bounds":{"left":0.7659575,"top":1.0,"width":0.008976064,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hakeem Oloritun","depth":23,"bounds":{"left":0.7759308,"top":1.0,"width":0.036070477,"height":-0.07821226},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28 Jan, 6:00 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$34,877","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 7:26 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Proposal / Next Steps","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Holger Marggraf","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Feb, 11:00 AM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"42m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"€0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 3:41 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web Demo","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott Ferguson","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Mar, 11:29 AM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1h","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$7,620","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oliver Harris","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 3:34 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web Demo","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott Ferguson","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Mar, 11:29 AM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1h","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$7,620","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Petko Kashinski","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 10:01 AM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"cold call","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 4:35 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Petko Kashinski","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 9:43 AM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Refresher Session","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melanie Yu Yu","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Apr, 5:58 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zornitsa Dzhongova","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 4:16 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discovery Call (upsell)","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oscar Linares","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 Apr, 3:30 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$11,875","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mario Georgiev","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 2:59 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support / Troubleshooting","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adriana Voyce","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 Apr, 7:28 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"31m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"£13,063","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Greg Moser","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 12:33 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13 Apr, 6:00 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 12:02 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trial Strategy Session","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott Ferguson","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30 Mar, 5:30 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"18m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$11,820","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Greg Moser","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 Apr, 6:54 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13 Apr, 6:00 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Greg Moser","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":21,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 Apr, 6:34 PM","depth":20,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"activity","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":23,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"13 Apr, 6:00 PM","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32m","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":22,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Intercom Messenger","depth":7,"bounds":{"left":0.9773936,"top":0.94573027,"width":0.015957447,"height":0.03830806},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9102528879872423980
|
-1806705620003787647
|
visual_change
|
accessibility
|
NULL
|
Jiminny Mail
mail.google.com
Platform Sprint 2 Q2 Jiminny Mail
mail.google.com
Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - Jira
[SRD-6787] Issue with reconnecting Zoho - 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
Jiminny MCP Connector - Product - Confluence
Jiminny MCP Connector - Product - Confluence
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
[JY-20676] Notify the user if a Panorama prompts is deleted but is used in AJ Report - Jira
Jiminny Mail
Jiminny Mail
Close tab
[JY-20500] Batch initial sync for Salesforce - Jira
[JY-20500] Batch initial sync for Salesforce - Jira
Feed — jiminny — Sentry
Feed — jiminny — Sentry
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
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
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
3
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
3
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Marin Nedevski at Reward Gateway
Jheelam Ghosh and Lauren Hudson
Jheelam Ghosh and Lauren Hudson
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Diane Farah at Flosonics Medical
Meeting with Stoyan 🚀 (Diane Farah)
Meeting with Stoyan 🚀 (Diane Farah)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
James Casey at Referoo
Notetaker added by Oliver Harris
Notetaker added by Oliver Harris
1
times played
Live Feed
Live Feed
Stoyan Tanev
listened to call
Yesterday, 5:28 PM
Support / Troubleshooting
with
Diane Farah
Held:
17 Apr, 4:58 PM
Duration:
7m
Value:
$22,656
Lauren Hudson
listened to call
Yesterday, 5:16 PM
Kick-Off / Onboarding
with
Todd Upchurch
Held:
8 Apr, 4:28 PM
Duration:
33m
Value:
$4,800
Becky Butler
listened to call
Yesterday, 4:43 PM
Disco/Demo
with
Graeme Hennessey
Held:
10 Apr, 5:29 PM
Duration:
31m
Value:
$19,716
Calum Scott
listened to call
Yesterday, 3:17 PM
Trial Strategy Session
with
James Casey
Held:
24 Mar, 4:34 PM
Duration:
22m
Value:
$9,600
Calum Scott
listened to call
Yesterday, 3:14 PM
Kick-Off / Onboarding
with
unknown customer
Held:
16 Mar, 6:03 PM
Duration:
28m
Value:
$0
Calum Scott
listened to call
Yesterday, 3:08 PM
End of Trial check in
with
James Casey
Held:
7 Apr, 11:37 AM
Duration:
19m
Value:
$9,600
Becky Butler
listened to call
Yesterday, 12:03 PM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Oliver Harris
listened to call
Yesterday, 12:02 PM
Support / Troubleshooting
with
Marin Nedevski
Held:
9 Apr, 12:28 PM
Duration:
29m
Value:
$0
Gabriela Dureva
listened to call
Yesterday, 11:42 AM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Calum Scott
listened to call
17 Apr, 7:26 PM
Proposal / Next Steps
with
Holger Marggraf
Held:
20 Feb, 11:00 AM
Duration:
42m
Value:
€0
Becky Butler
listened to call
17 Apr, 3:41 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Oliver Harris
listened to call
17 Apr, 3:34 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Petko Kashinski
listened to call
17 Apr, 10:01 AM
cold call
with
unknown customer
Held:
16 Apr, 4:35 PM
Duration:
1m
Value:
$0
Petko Kashinski
listened to call
17 Apr, 9:43 AM
Refresher Session
with
Melanie Yu Yu
Held:
9 Apr, 5:58 PM
Duration:
30m
Value:
$0
Zornitsa Dzhongova
listened to call
16 Apr, 4:16 PM
Discovery Call (upsell)
with
Oscar Linares
Held:
15 Apr, 3:30 PM
Duration:
32m
Value:
$11,875
Mario Georgiev
listened to call
16 Apr, 2:59 PM
Support / Troubleshooting
with
Adriana Voyce
Held:
15 Apr, 7:28 PM
Duration:
31m
Value:
£13,063
Greg Moser
listened to call
16 Apr, 12:33 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Becky Butler
listened to call
16 Apr, 12:02 PM
Trial Strategy Session
with
Scott Ferguson
Held:
30 Mar, 5:30 PM
Duration:
18m
Value:
$11,820
Greg Moser
listened to call
15 Apr, 6:54 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Greg Moser
listened to call
15 Apr, 6:34 PM
activity
with
unknown customer
Held:
13 Apr, 6:00 PM
Duration:
32m
Value:
$0
Open Intercom Messenger...
|
60885
|
|
54376
|
1175
|
1
|
2026-04-20T08:56:54.796412+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776675414796_m1.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.jiminny.com/dashboard
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Close bookmarks (⌘B)
Bookmarks
Bookmarks
Close sidebar
Search bookmarks
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
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
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Base.com
Jiminny x Base - Commercials & Next Steps
Jiminny x Base - Commercials & Next Steps
1
times played
Belen Conteri at Superside
Belen Conteri and Lauren Hudson
Belen Conteri and Lauren Hudson
1
times played
Thomas Baxter at John Galt Solutions
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Live Feed
Live Feed
Gabriela Dureva
listened to call
Today, 11:42 AM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Calum Scott
listened to call
17 Apr, 7:26 PM
Proposal / Next Steps
with
Holger Marggraf
Held:
20 Feb, 11:00 AM
Duration:
42m
Value:
€0
Becky Butler
listened to call
17 Apr, 3:41 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Oliver Harris
listened to call
17 Apr, 3:34 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Petko Kashinski
listened to call
17 Apr, 10:01 AM
cold call
with
unknown customer
Held:
16 Apr, 4:35 PM
Duration:
1m
Value:
$0
Petko Kashinski
listened to call
17 Apr, 9:43 AM
Refresher Session
with
Melanie Yu Yu
Held:
9 Apr, 5:58 PM
Duration:
30m
Value:
$0
Zornitsa Dzhongova
listened to call
16 Apr, 4:16 PM
Discovery Call (upsell)
with
Oscar Linares
Held:
15 Apr, 3:30 PM
Duration:
32m
Value:
$11,875
Mario Georgiev
listened to call
16 Apr, 2:59 PM
Support / Troubleshooting...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"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":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","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":"Close bookmarks (⌘B)","depth":6,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Bookmarks","depth":5,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Bookmarks","depth":6,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close sidebar","depth":6,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Search bookmarks","depth":7,"help_text":"","role_description":"search text field","subrole":"AXSearchField","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"1","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"1","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"My Recordings","depth":14,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"My Recordings","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Team Recordings","depth":14,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Team Recordings","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Everyone's Recordings","depth":14,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Everyone's Recordings","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Notetaker added on 05-15-23 @ 20:45","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 May, 2023, 8:47 PM","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Schedule","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Schedule","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Invite Notetaker","depth":14,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"This Week","depth":14,"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":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"My Schedule","depth":14,"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":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"No Meetings","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Trending this month","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Trending this month","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Sort by Sort by: Most played","depth":13,"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":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sort by:","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Most played","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Miles Weeks at Cloud Gateway","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Miles Weeks and Zornitsa Dzhongova","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Miles Weeks and Zornitsa Dzhongova","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Unknown Customer","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Steve Lazarus and Greg Moser","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Steve Lazarus and Greg Moser","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"4","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"David Roberts at Sigma Labs","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tony Lombardo at AutoLeap","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meet with Becky from Jiminny 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meet with Becky from Jiminny 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tom Daniels at Worldover","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Worldover Onboarding Workshop","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Worldover Onboarding Workshop","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Will Pagden at Rosterfy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Rosterfy & Jiminny [Intro call]","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Rosterfy & Jiminny [Intro call]","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Todd Upchurch at LeadVenture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - sync (Lauren & Todd)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - sync (Lauren & Todd)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Alex Bogumil at Cognitive Credit","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Alex & Gabby Jiminny Customisations Alignment","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Alex & Gabby Jiminny Customisations Alignment","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Phil Hart at Oxford Medical Simulation","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Oliver from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Oliver from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melanie Yu Yu at Unibuddy","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny <> Unibuddy (weekly acceleration!)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Jack Wilson at Akixi","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Akixi & Jiminny Onboarding Workshop 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kelly Atkins at BT Local Business Severnside","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BT Coventry & Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BT Coventry & Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kerensa Martin at CreateFuture","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny x CF - Connect to Jiminny :)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x CF - Connect to Jiminny :)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Philipp Kronsteiner at DocPlanner","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Oliver","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Oliver","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Rachel Hand at Storage King","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zilch","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Johnathan Berryman at INSURITAS","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny + VIU by HUB/Insuritas Touchbase-Monthly","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Adriana Voyce at Credentially","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Meeting with Stoyan 🚀 (Adriana Voyce)","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melissa Desousa at Lloyd's List Intelligence","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Melissa De Sousa and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Melissa De Sousa and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oscar Linares at Storyclash GmbH","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Oscar Linares and Petko Kashinski","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Oscar Linares and Petko Kashinski","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Graeme Hennessey at RealTime eClinical Solutions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny - Commercials Review & Next Steps 🚀","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Base.com","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny x Base - Commercials & Next Steps","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Base - Commercials & Next Steps","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Belen Conteri at Superside","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Belen Conteri and Lauren Hudson","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Belen Conteri and Lauren Hudson","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Thomas Baxter at John Galt Solutions","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"🚀 Meet with Becky from Jiminny","depth":15,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"🚀 Meet with Becky from Jiminny","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"times played","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Live Feed","depth":13,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Live Feed","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Today, 11:42 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Decision / Closing","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Hakeem Oloritun","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"28 Jan, 6:00 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"27m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$34,877","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Calum Scott","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 7:26 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Proposal / Next Steps","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Holger Marggraf","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Feb, 11:00 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"42m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"€0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Becky Butler","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 3:41 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web Demo","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott Ferguson","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Mar, 11:29 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1h","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$7,620","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oliver Harris","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 3:34 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Web Demo","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Scott Ferguson","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Mar, 11:29 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1h","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$7,620","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Petko Kashinski","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 10:01 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"cold call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"unknown customer","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 4:35 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Petko Kashinski","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17 Apr, 9:43 AM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Refresher Session","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Melanie Yu Yu","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 Apr, 5:58 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$0","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Zornitsa Dzhongova","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 4:16 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discovery Call (upsell)","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"with","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Oscar Linares","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Held:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"15 Apr, 3:30 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Duration:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"32m","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Value:","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"$11,875","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Mario Georgiev","depth":18,"bounds":{"left":1.0,"top":0.0,"width":-0.036458373,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"listened to call","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"16 Apr, 2:59 PM","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Support / Troubleshooting","depth":18,"bounds":{"left":1.0,"top":0.0,"width":-0.036458373,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9102250200902021492
|
-674061312079434624
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Close bookmarks (⌘B)
Bookmarks
Bookmarks
Close sidebar
Search bookmarks
1
1
My Recordings
My Recordings
Team Recordings
Team Recordings
Everyone's Recordings
Everyone's Recordings
Unknown Customer
Notetaker added on 05-15-23 @ 20:45
15 May, 2023, 8:47 PM
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
Miles Weeks at Cloud Gateway
Miles Weeks and Zornitsa Dzhongova
Miles Weeks and Zornitsa Dzhongova
4
times played
Unknown Customer
Steve Lazarus and Greg Moser
Steve Lazarus and Greg Moser
4
times played
David Roberts at Sigma Labs
Jiminny Onboarding Workshop
Jiminny Onboarding Workshop
2
times played
Tony Lombardo at AutoLeap
Meeting with Oliver
Meeting with Oliver
2
times played
Graeme Hennessey at RealTime eClinical Solutions
Meet with Becky from Jiminny 🚀
Meet with Becky from Jiminny 🚀
2
times played
Tom Daniels at Worldover
Worldover Onboarding Workshop
Worldover Onboarding Workshop
2
times played
Will Pagden at Rosterfy
Rosterfy & Jiminny [Intro call]
Rosterfy & Jiminny [Intro call]
2
times played
Todd Upchurch at LeadVenture
Jiminny - sync (Lauren & Todd)
Jiminny - sync (Lauren & Todd)
2
times played
Alex Bogumil at Cognitive Credit
Alex & Gabby Jiminny Customisations Alignment
Alex & Gabby Jiminny Customisations Alignment
2
times played
Phil Hart at Oxford Medical Simulation
🚀 Meet with Oliver from Jiminny
🚀 Meet with Oliver from Jiminny
2
times played
Melanie Yu Yu at Unibuddy
Jiminny <> Unibuddy (weekly acceleration!)
Jiminny <> Unibuddy (weekly acceleration!)
2
times played
Jack Wilson at Akixi
Akixi & Jiminny Onboarding Workshop 🚀
Akixi & Jiminny Onboarding Workshop 🚀
1
times played
Kelly Atkins at BT Local Business Severnside
BT Coventry & Jiminny
BT Coventry & Jiminny
1
times played
Kerensa Martin at CreateFuture
Jiminny x CF - Connect to Jiminny :)
Jiminny x CF - Connect to Jiminny :)
1
times played
Philipp Kronsteiner at DocPlanner
Meeting with Oliver
Meeting with Oliver
1
times played
Rachel Hand at Storage King
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Zilch
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Johnathan Berryman at INSURITAS
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
Jiminny + VIU by HUB/Insuritas Touchbase-Monthly
1
times played
Adriana Voyce at Credentially
Meeting with Stoyan 🚀 (Adriana Voyce)
Meeting with Stoyan 🚀 (Adriana Voyce)
1
times played
Melissa Desousa at Lloyd's List Intelligence
Melissa De Sousa and Petko Kashinski
Melissa De Sousa and Petko Kashinski
1
times played
Oscar Linares at Storyclash GmbH
Oscar Linares and Petko Kashinski
Oscar Linares and Petko Kashinski
1
times played
Graeme Hennessey at RealTime eClinical Solutions
Jiminny - Commercials Review & Next Steps 🚀
Jiminny - Commercials Review & Next Steps 🚀
1
times played
Base.com
Jiminny x Base - Commercials & Next Steps
Jiminny x Base - Commercials & Next Steps
1
times played
Belen Conteri at Superside
Belen Conteri and Lauren Hudson
Belen Conteri and Lauren Hudson
1
times played
Thomas Baxter at John Galt Solutions
🚀 Meet with Becky from Jiminny
🚀 Meet with Becky from Jiminny
1
times played
Live Feed
Live Feed
Gabriela Dureva
listened to call
Today, 11:42 AM
Decision / Closing
with
Hakeem Oloritun
Held:
28 Jan, 6:00 PM
Duration:
27m
Value:
$34,877
Calum Scott
listened to call
17 Apr, 7:26 PM
Proposal / Next Steps
with
Holger Marggraf
Held:
20 Feb, 11:00 AM
Duration:
42m
Value:
€0
Becky Butler
listened to call
17 Apr, 3:41 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Oliver Harris
listened to call
17 Apr, 3:34 PM
Web Demo
with
Scott Ferguson
Held:
20 Mar, 11:29 AM
Duration:
1h
Value:
$7,620
Petko Kashinski
listened to call
17 Apr, 10:01 AM
cold call
with
unknown customer
Held:
16 Apr, 4:35 PM
Duration:
1m
Value:
$0
Petko Kashinski
listened to call
17 Apr, 9:43 AM
Refresher Session
with
Melanie Yu Yu
Held:
9 Apr, 5:58 PM
Duration:
30m
Value:
$0
Zornitsa Dzhongova
listened to call
16 Apr, 4:16 PM
Discovery Call (upsell)
with
Oscar Linares
Held:
15 Apr, 3:30 PM
Duration:
32m
Value:
$11,875
Mario Georgiev
listened to call
16 Apr, 2:59 PM
Support / Troubleshooting...
|
NULL
|
|
36766
|
NULL
|
0
|
2026-04-16T10:58:52.477156+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337132477_m1.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/onboard/Onboard.vue...
|
1
|
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
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.054166667,"top":0.027777778,"width":0.08055556,"height":0.035555556},"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,"bounds":{"left":0.13472222,"top":0.027777778,"width":0.26597223,"height":0.035555556},"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,"bounds":{"left":0.6180556,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.65,"top":0.027777778,"width":0.1736111,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.82361114,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.8472222,"top":0.027777778,"width":0.023611112,"height":0.035555556},"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.87083334,"top":0.027777778,"width":0.023611112,"height":0.035555556},"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.9291667,"top":0.027777778,"width":0.023611112,"height":0.035555556},"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.9527778,"top":0.027777778,"width":0.023611112,"height":0.035555556},"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.9763889,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5076389,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.52847224,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.5486111,"top":0.44777778,"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.5638889,"top":0.44777778,"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\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.5875,"top":0.18111111,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.61388886,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"disc","depth":4,"bounds":{"left":0.63680553,"top":0.18,"width":0.09166667,"height":0.022222223},"value":"disc","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.74722224,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.76805556,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.7861111,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.8041667,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.83263886,"top":0.17888889,"width":0.05347222,"height":0.024444444},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.88611114,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.90416664,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.9222222,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.90625,"top":0.2211111,"width":0.015277778,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.92569447,"top":0.2211111,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9458333,"top":0.2188889,"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.9611111,"top":0.2188889,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
9101995465193506738
|
756119827378317270
|
idle
|
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
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
36764
|
|
40775
|
865
|
11
|
2026-04-16T16:59:46.401283+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776358786401_m2.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FinderFileEditViewWindowHelpscreenlplbe=llminny® A FinderFileEditViewWindowHelpscreenlplbe=llminny® AirDrop•) RecentsA Applications|9 Documents• Desktop( DownloadsA lukasiCloudiCloud Drive283 Sync folder• dataco,sclITeli screenpipe.2026-04-16.0.log• screenpipe.2026-04-15.0.log• screenpipe.2026-04-14.0.10gscreenpipe.2026-04-09.0.log• screenpipe.2026-04-11.0.logL screenpipe.2026-04-12.0.10gDi screenpipe.2026-04-13.0.logcoscllTe-Shmnines- screenpipe sync.shcontia.ison• db.sqlite-walLocations• DXP4800PLUS-B5... ⅔ge NerworkTagsDCKMI• Orange• Red• Yellow• Green• Blue• Purple• All Tags...Date ModifiedYesterday at 14:53Today at 19:56Today at 19:56Yesterday at 18:5514 Apr 2026 at 19:319 Apr 2026 at 21:2711 Apr 2026 at 23:1412 Apr 2026 at 23:5513 Apr 2026 at 19:50Today at 18:33Yesterday at 14:53Today at 19:43Today at 16:49Today at 19:56Q Search4,24 GB188 KBWOND162 KB133 KBgo kb72 KB13 KB666 bytes358 bytesZero bytes88WOrKFolderDocu mentLog FileLoe rlleLog FileLog FileLog FlleLog FileLog FileDocu mentFoldenlerminal serlotsJSONIDocument=llminny® AirDrop•) RecentsA Applications|9 Documents• Desktop• DownloadsA lukasIcloudiCloud Drive283 Sync folderLocations| DXP4800PLUS-B5... €Ga NetworkTagsDCKMI• Orange• Red• Yellow• Green• Blue• Purple• All Tags....screenoloeRecentsNamedb.sqlite•data• archive.db/ oibes> time-breakdown•al-naoie> meeting-summaryaday-recdpstandup-updatevideo-export_ archive.db-journalscreenploe-aay.snscreenoioe.d• test writeDate Moditied14 Apr 2026 at 20:4914 Apr 2026 at 19:32Today at 19:5911 Aor 7076 at 16.6111 Apr 2026 at 16:50' AorZOroallo.o011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 17:00' A0r2020 all411 Apr 2026 at 17:26100% C2Thu 16 Apr 19:59:46Q Searchscreenplpe1,42 GBDocument1,34 GBFolder200,4 MbDocument13 KBFolder962 bytesFolder879 bytesocen842 bytesFolder004 oylesrolaer667 bytesFolden486 byiksDocument3 KBlerminal scriptsZero bytesDocumentZero bytesUnix Ex…..ble File1 of 14 selected, 43,22 GB available13 items, 2,11 TB available...
|
NULL
|
9101811309363349458
|
NULL
|
visual_change
|
ocr
|
NULL
|
FinderFileEditViewWindowHelpscreenlplbe=llminny® A FinderFileEditViewWindowHelpscreenlplbe=llminny® AirDrop•) RecentsA Applications|9 Documents• Desktop( DownloadsA lukasiCloudiCloud Drive283 Sync folder• dataco,sclITeli screenpipe.2026-04-16.0.log• screenpipe.2026-04-15.0.log• screenpipe.2026-04-14.0.10gscreenpipe.2026-04-09.0.log• screenpipe.2026-04-11.0.logL screenpipe.2026-04-12.0.10gDi screenpipe.2026-04-13.0.logcoscllTe-Shmnines- screenpipe sync.shcontia.ison• db.sqlite-walLocations• DXP4800PLUS-B5... ⅔ge NerworkTagsDCKMI• Orange• Red• Yellow• Green• Blue• Purple• All Tags...Date ModifiedYesterday at 14:53Today at 19:56Today at 19:56Yesterday at 18:5514 Apr 2026 at 19:319 Apr 2026 at 21:2711 Apr 2026 at 23:1412 Apr 2026 at 23:5513 Apr 2026 at 19:50Today at 18:33Yesterday at 14:53Today at 19:43Today at 16:49Today at 19:56Q Search4,24 GB188 KBWOND162 KB133 KBgo kb72 KB13 KB666 bytes358 bytesZero bytes88WOrKFolderDocu mentLog FileLoe rlleLog FileLog FileLog FlleLog FileLog FileDocu mentFoldenlerminal serlotsJSONIDocument=llminny® AirDrop•) RecentsA Applications|9 Documents• Desktop• DownloadsA lukasIcloudiCloud Drive283 Sync folderLocations| DXP4800PLUS-B5... €Ga NetworkTagsDCKMI• Orange• Red• Yellow• Green• Blue• Purple• All Tags....screenoloeRecentsNamedb.sqlite•data• archive.db/ oibes> time-breakdown•al-naoie> meeting-summaryaday-recdpstandup-updatevideo-export_ archive.db-journalscreenploe-aay.snscreenoioe.d• test writeDate Moditied14 Apr 2026 at 20:4914 Apr 2026 at 19:32Today at 19:5911 Aor 7076 at 16.6111 Apr 2026 at 16:50' AorZOroallo.o011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 16:5011 Apr 2026 at 17:00' A0r2020 all411 Apr 2026 at 17:26100% C2Thu 16 Apr 19:59:46Q Searchscreenplpe1,42 GBDocument1,34 GBFolder200,4 MbDocument13 KBFolder962 bytesFolder879 bytesocen842 bytesFolder004 oylesrolaer667 bytesFolden486 byiksDocument3 KBlerminal scriptsZero bytesDocumentZero bytesUnix Ex…..ble File1 of 14 selected, 43,22 GB available13 items, 2,11 TB available...
|
40774
|
|
18876
|
399
|
22
|
2026-04-15T07:00:35.108230+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776236435108_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpllolmeet.google.com/tgb-pyuf-dri?authuser=lukas.kovalik%40jiminny.com(Platform) Planning…. nowA100% <'8• Wed 15 Apr 10:00:34Ask GeminiGemini is available to answer questionsabout meeting discussions. It won't create arecording or store caption data after themeeting ends. The meeting host can turn itoff in settings.Learn moreDon't show againPop out this videoSteliyan Georgiev• 0:20.=Lukas Kovalik10:00 AM | [Platform] Planning I Session zLộ3...
|
NULL
|
9101358763203341421
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfiles→ToolsW FirefoxFileEditViewHistoryBookmarksProfiles→ToolsWindowHelpllolmeet.google.com/tgb-pyuf-dri?authuser=lukas.kovalik%40jiminny.com(Platform) Planning…. nowA100% <'8• Wed 15 Apr 10:00:34Ask GeminiGemini is available to answer questionsabout meeting discussions. It won't create arecording or store caption data after themeeting ends. The meeting host can turn itoff in settings.Learn moreDon't show againPop out this videoSteliyan Georgiev• 0:20.=Lukas Kovalik10:00 AM | [Platform] Planning I Session zLộ3...
|
NULL
|
|
50450
|
1079
|
18
|
2026-04-17T14:52:06.711079+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-17/1776 /Users/lukas/.screenpipe/data/data/2026-04-17/1776437526711_m1.jpg...
|
Finder
|
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FinderFileEditViewGoWindowHelp→Search Jiminny Inc +FinderFileEditViewGoWindowHelp→Search Jiminny IncHomeDMsActivityFilesLaterJiminny ...sos+ CHISHICCIII5# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi…..Aneliya Angelo...84• MessagesAdd canvasO Files+Ask Aminmy Test RToday©] Eastern Surmmary - 7 - 13 Apr 2026) Tuesdsy Report - 13 Aor 2026Ask Jiminmy Test Report - 13 Apr 2026Ask Aminny lest Keport - 15 Apr 2026..•и втория тикет не успявам до горепродусна[URL_WITH_CREDENTIALS] ₴7ec2-user@ip-10-...• 88.log":XM:%5')] $*"...
|
NULL
|
9100712883276084672
|
NULL
|
click
|
ocr
|
NULL
|
+FinderFileEditViewGoWindowHelp→Search Jiminny Inc +FinderFileEditViewGoWindowHelp→Search Jiminny IncHomeDMsActivityFilesLaterJiminny ...sos+ CHISHICCIII5# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# support# thank-yous# the_people_of jimi…..Aneliya Angelo...84• MessagesAdd canvasO Files+Ask Aminmy Test RToday©] Eastern Surmmary - 7 - 13 Apr 2026) Tuesdsy Report - 13 Aor 2026Ask Jiminmy Test Report - 13 Apr 2026Ask Aminny lest Keport - 15 Apr 2026..•и втория тикет не успявам до горепродусна[URL_WITH_CREDENTIALS] ₴7ec2-user@ip-10-...• 88.log":XM:%5')] $*"...
|
NULL
|
|
14931
|
NULL
|
0
|
2026-04-14T14:16:16.211584+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-14/1776 /Users/lukas/.screenpipe/data/data/2026-04-14/1776176176211_m1.jpg...
|
NULL
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/bdj-nvho-br15:23nny.comNikolay Yankov (Presenting, annotating)Retro - Platform • 59 m left100% K28 • Tue 14 Apr 17:16:156+QSFleEditM inbor2 Put:С лy-1вO Actiohttps://acp.staging.jiminny.com/ai-reportsD Projectse AWSE3 SSHAl ReportsQ ReportnalNAME +Test 7 - 13 Ape 2026Test 7 - 13 Apr 2026© Test 6 - 13 Apr 2026Test 6 - 13 Ape 2026C CDQ Acto|FREQUENCYDailyDalyDalyDallySHAREDQ DrоmQ FxDE Outados© Clear all |DATE *14/04/202640402614/04/202614/04/20260л x503 Ask Jimina teportsACTIONS• C.• С.• C.Tue 14 Apr 17:163 oideO cotВ LAмп• DeveCJ TasksL4insights & Coachin._т. 9( Preserve 1ogD DerMemory »Disable cache No theortling- Al Bockmarxs0540 A79 B28AI FeONKHR DO CSS 25• Big reovest rowsE OverntenSocket mwm• Group by trame( ScreenshotsOoverD efasrsse-4b5b-4009-b€9 Mtasponxaf%2Fplatform.ltarponxal%2Fplatform(0 iTarporoar%,2Fplatform.€0 Marponuaf%2FplatformD d206fefe-ccac-4067-ab.40 mtarponsat% 2Fplatform.60 itarponxaF%,2Folatform.https://wpp.staging.jmicrе-осас-4007-2050-c80089199973© 204 No Contens18.239.36.90 -443no-telerter-when-downeraorAneliya AngelovaNikolay Yankov•PetoornemehenSteliyan GeorgievNikolay Ivanovmeet poogle com is sharing your screen.Stop tunngYSYDNROEASteorKonortshiLukas Kovalik5:16 PM | Retro - Platform...
|
NULL
|
9100513646184738232
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/bdj-nvho-br15:23nny.comNikolay Yankov (Presenting, annotating)Retro - Platform • 59 m left100% K28 • Tue 14 Apr 17:16:156+QSFleEditM inbor2 Put:С лy-1вO Actiohttps://acp.staging.jiminny.com/ai-reportsD Projectse AWSE3 SSHAl ReportsQ ReportnalNAME +Test 7 - 13 Ape 2026Test 7 - 13 Apr 2026© Test 6 - 13 Apr 2026Test 6 - 13 Ape 2026C CDQ Acto|FREQUENCYDailyDalyDalyDallySHAREDQ DrоmQ FxDE Outados© Clear all |DATE *14/04/202640402614/04/202614/04/20260л x503 Ask Jimina teportsACTIONS• C.• С.• C.Tue 14 Apr 17:163 oideO cotВ LAмп• DeveCJ TasksL4insights & Coachin._т. 9( Preserve 1ogD DerMemory »Disable cache No theortling- Al Bockmarxs0540 A79 B28AI FeONKHR DO CSS 25• Big reovest rowsE OverntenSocket mwm• Group by trame( ScreenshotsOoverD efasrsse-4b5b-4009-b€9 Mtasponxaf%2Fplatform.ltarponxal%2Fplatform(0 iTarporoar%,2Fplatform.€0 Marponuaf%2FplatformD d206fefe-ccac-4067-ab.40 mtarponsat% 2Fplatform.60 itarponxaF%,2Folatform.https://wpp.staging.jmicrе-осас-4007-2050-c80089199973© 204 No Contens18.239.36.90 -443no-telerter-when-downeraorAneliya AngelovaNikolay Yankov•PetoornemehenSteliyan GeorgievNikolay Ivanovmeet poogle com is sharing your screen.Stop tunngYSYDNROEASteorKonortshiLukas Kovalik5:16 PM | Retro - Platform...
|
NULL
|
|
75178
|
1871
|
27
|
2026-04-23T10:41:49.091738+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940909091_m1.jpg...
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Slack...
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Untitled","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Untitled","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":22,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:56:36 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:56 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘provider’ => $activity->getProvider(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘channel’ => $activity->getType(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘duration’ => $activity->getDuration(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘status’ => $activity->getStatus(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘recordingStatus’ => $activity->getRecordingState(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘private’ => $activity->getIsPrivate(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘logged’ => $activity->hasCrmProviderId(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:57:21 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:57","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"не ги виждам в UI","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:03:17 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:03 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ще пиша на съпорта им да видя как се стига до това","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:07:43 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:07","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"о боже, намерих го","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:30 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"мога да ползвам метаданните обаче само като правя репорти/чартове","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:50 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"но не мога да ги ползвам ако искам на база на тях да пускам определени банери","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:59 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"та най добре в този случай да са два отделни евента","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:10:56 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:10 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:11:08 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:11 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"ок","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports\nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":23,"value":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports\nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здрасти имам бърз въпрос.","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":25,"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":20,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"role_description":"text"}]...
|
9100432071031166953
|
-3585546096054204073
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel
iTerm2ShellEditViewSessionScriptsProfilesWindowHelpPROD (ssh)DOCKER181DEV (-zsh)O $82APP (-zsh)DOCKER (docker-compose)docker_lamp_1docker_lamp_12026-04-23 10:23:02 Running ['artisan'meeting-bot:schedule-bot] ….1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'meeting-bot: schedule-bot > */proc/1/fd/1'2>&1docker_lamp_12026-04-23 10:23:03 Running ['artisan'dialers:monitor-activities]1sDONEdocker_1amp_11 '/usr/local/bin/php' 'artisan' dialers:monitor-activities › */proc/1/fd/1'2>&1docker_lamp_12026-04-23 10:23:04 Running ['artisan' jiminny:monitor-social-accountSJ1s DONEdocker_lamp_11 '/usr/local/bin/php' 'artisan' jiminny:monitor-social-accounts > '/proc/1/fd/1'2>&1docker_lamp_12026-04-23 10:23:05 Running ['artisan' mailbox:skip-lists:refresh]1sDONEdocker_lamp_11 '/usr/local/bin/php' 'artisan'mailbox:skip-lists:refresh › */proc/1/fd/1'2>&1docker_lamp_112026-04-23 10:23:07 Running ['artisan' mailbox:batch:process --max-batches=15]1s DONEdocker_Lamp_1t '/usr/local/bin/php' 'artisan'mailbox:batch:process --max-batches=15 > '/proc/1/fd/1' 2>&1docker_lamp_12026-04-23 10:23:08 Running ['artisan' mailbox:batch:retry-failed --max-batches=15] in background 0.98ms DONEdocker_lamp_1|" ('/usr/local/bin/php' 'artisan' mailbox:batch:retry-failedtches=15 › '/proc/1/fd/1' 2>&1 ; '/usr/local/bin/php' 'artisan'rk/schedule-390defd641effba0f73a895e426ded4cf2ba7f11" "$?") > '/dev/null' 2>&1 &docker_1amp_1 |2026-04-23 10:23:08 Running ['artisan'crm:integration-app-validate-team-connection] Parameter"teamId is not provided. Loading all teams using IntegrationAdocker_lamp_1 | 1 team connections to be validated.docker_lamp_1docker_lamp_1|1 '/usr/local/bin/php' 'artisan' crm:integration-app-validate-team-connection › '/proc/1/fd/1' 2>&1docker_1amp_1docker_Lamp_1I run_artisan_schedule: Done waiting forschedule: rundocker_lamp_12026-04-23 10:23:10 Jiminny\Services\Crm\IntegrationApp\Jobs\ValidateTeamActiveConnectionJobRUNNINGdocker_1amp_12026-04-23 10:23:10 Jiminny\Services\Crm\IntegrationApp\Jobs\ValidateTeamActiveConnectionJob320.81ms DONEdocker_lamp_1docker_lamp_12026-04-23 10:24:02 Running ['artisan' meeting-bot:schedule-bot] ...1s DONEdocker_lamp_1 | l '/usr/local/bin/php' 'artisan' meeting-bot: schedule-bot › */proc/1/fd/1' 2>&1la6lSupport Daily - in 1h 19 m83screenpipe"PROD (ssh)Run 'do-release-upgrade' to upgrade to it.Бг)O $4100% <78Thu 23 Apr 13:41:48-zsh181*5PROD*** System restart required ***Last login: Wed Apr 22 12:09:092026 from 212.5.153.87lukas@jiminny-prod-bastion:~$X L3 EU (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parents@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I|X T4STAGE (-zsh)Last login: Thu Apr 23 12:12:54 on consolePoetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetrycould not find a pyproject.toml file in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny$QA (-zsh)Last login: Thu Apr 23 12:13:49on ttys001Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentsX 16FE (-zsh)Last login: Thu Apr 23 12:13:49on ttys003Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~ $ I17 EXt(-zsh)Poetry could not find a pyproject.toml file in /Users/lukas or its parentsPoetry could not find a pyproject.tomlfile in /Users/lukas or its parentslukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~STAGEFRONTENDEXTENSION...
|
75176
|
|
75179
|
1872
|
32
|
2026-04-23T10:41:49.005711+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940909005_m2.jpg...
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Galya Dimitrova (DM) - Jiminny Inc - 1 new item - Slack...
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel...
|
[{"role":"AXPopUpButton","text [{"role":"AXPopUpButton","text":"Switch workspaces… (Jiminny Inc) Has new messages","depth":14,"bounds":{"left":0.0056515955,"top":0.058260176,"width":0.011968086,"height":0.028731046},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.0029920214,"top":0.10055866,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.0066489363,"top":0.13806863,"width":0.009973404,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.0029920214,"top":0.15482841,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.0076462766,"top":0.19233839,"width":0.007978723,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.0029920214,"top":0.20909816,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.004986702,"top":0.24660814,"width":0.012965426,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.0029920214,"top":0.26336792,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0076462766,"top":0.3008779,"width":0.0076462766,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.0029920214,"top":0.31763768,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.00731383,"top":0.35514766,"width":0.008643617,"height":0.0103751},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.0029920214,"top":0.3719074,"width":0.017287234,"height":0.054269753},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.006981383,"top":0.4094174,"width":0.008976064,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"c-learning-people","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"deal-insights-dev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-copilot-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"people-with-zoom-phone-licences","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"bounds":{"left":0.042220745,"top":0.09177973,"width":0.03856383,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"bounds":{"left":0.042220745,"top":0.10055866,"width":0.01662234,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"bounds":{"left":0.042220745,"top":0.12290503,"width":0.01761968,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"bounds":{"left":0.042220745,"top":0.1452514,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"bounds":{"left":0.042220745,"top":0.16759777,"width":0.016954787,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"bounds":{"left":0.042220745,"top":0.18994413,"width":0.024268618,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"bounds":{"left":0.042220745,"top":0.2122905,"width":0.04488032,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.26496407,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.07945479,"top":0.26496407,"width":0.0063164895,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.08211436,"top":0.26496407,"width":0.014295213,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"bounds":{"left":0.09607713,"top":0.28252193,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"bounds":{"left":0.09607713,"top":0.28252193,"width":0.0003324468,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"bounds":{"left":0.042220745,"top":0.28731045,"width":0.026263298,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"bounds":{"left":0.042220745,"top":0.30965683,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tomov","depth":23,"bounds":{"left":0.042220745,"top":0.3320032,"width":0.030585106,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"bounds":{"left":0.042220745,"top":0.35434955,"width":0.032912236,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Petko Kashinski","depth":23,"bounds":{"left":0.042220745,"top":0.37669593,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"bounds":{"left":0.042220745,"top":0.3990423,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"bounds":{"left":0.042220745,"top":0.42138866,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Mario Georgiev","depth":23,"bounds":{"left":0.042220745,"top":0.44373503,"width":0.033909574,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Todor Stamatov","depth":23,"bounds":{"left":0.042220745,"top":0.4660814,"width":0.034242023,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Gabriela Dureva","depth":23,"bounds":{"left":0.042220745,"top":0.4884278,"width":0.03523936,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.042220745,"top":0.51077414,"width":0.034906916,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stefka Stoyanova","depth":23,"bounds":{"left":0.042220745,"top":0.5331205,"width":0.03756649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"bounds":{"left":0.042220745,"top":0.5554669,"width":0.028922873,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"bounds":{"left":0.042220745,"top":0.60814047,"width":0.011968086,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"bounds":{"left":0.042220745,"top":0.63048685,"width":0.021609042,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Google Calendar","depth":23,"bounds":{"left":0.042220745,"top":0.6528332,"width":0.03025266,"height":0.014365523},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.10206117,"top":0.09177973,"width":0.030585106,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.111369684,"top":0.10055866,"width":0.01861702,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.13397606,"top":0.09177973,"width":0.020944148,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.14328457,"top":0.10055866,"width":0.008976064,"height":0.012769354},"role_description":"text"},{"role":"AXRadioButton","text":"Untitled","depth":17,"bounds":{"left":0.15591756,"top":0.09177973,"width":0.02925532,"height":0.030327214},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Untitled","depth":19,"bounds":{"left":0.16522606,"top":0.10055866,"width":0.015957447,"height":0.012769354},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.18650267,"top":0.09177973,"width":0.010638298,"height":0.030327214},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.015625,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.0076462766,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.096409574,"top":0.0518755,"width":0.013962766,"height":0.0007980846},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":22,"bounds":{"left":0.13730054,"top":0.12689546,"width":0.05086436,"height":0.022346368},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:56:36 AM","depth":23,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:56 AM","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘provider’ => $activity->getProvider(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘channel’ => $activity->getType(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘duration’ => $activity->getDuration(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘status’ => $activity->getStatus(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘recordingStatus’ => $activity->getRecordingState(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘private’ => $activity->getIsPrivate(),","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"‘logged’ => $activity->hasCrmProviderId(),","depth":24,"bounds":{"left":0.11801862,"top":0.11572227,"width":0.061170213,"height":0.0207502},"role_description":"text"},{"role":"AXStaticText","text":"];","depth":24,"bounds":{"left":0.11801862,"top":0.13886672,"width":0.012965426,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 10:57:21 AM","depth":24,"bounds":{"left":0.105053194,"top":0.16520351,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"10:57","depth":25,"bounds":{"left":0.105053194,"top":0.16520351,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"не ги виждам в UI","depth":24,"bounds":{"left":0.11801862,"top":0.16280925,"width":0.041223403,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.13806863,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.13806863,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.11801862,"top":0.18515563,"width":0.036236703,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.16090426,"top":0.1867518,"width":0.0026595744,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:03:17 AM","depth":23,"bounds":{"left":0.16323139,"top":0.18914606,"width":0.017952127,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:03 AM","depth":24,"bounds":{"left":0.16323139,"top":0.18914606,"width":0.017952127,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ще пиша на съпорта им да видя как се стига до това","depth":24,"bounds":{"left":0.11801862,"top":0.20430966,"width":0.10239362,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.17158818,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.17158818,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:07:43 AM","depth":24,"bounds":{"left":0.105053194,"top":0.2482043,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:07","depth":25,"bounds":{"left":0.105053194,"top":0.2482043,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"о боже, намерих го","depth":24,"bounds":{"left":0.11801862,"top":0.24581006,"width":0.044215426,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.22106944,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.22106944,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:30 AM","depth":24,"bounds":{"left":0.105053194,"top":0.27214685,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.27214685,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"мога да ползвам метаданните обаче само като правя репорти/чартове","depth":24,"bounds":{"left":0.11801862,"top":0.2697526,"width":0.09674202,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.24501197,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.24501197,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:50 AM","depth":24,"bounds":{"left":0.105053194,"top":0.31364724,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.31364724,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"но не мога да ги ползвам ако искам на база на тях да пускам определени банери","depth":24,"bounds":{"left":0.11801862,"top":0.31125298,"width":0.10006649,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.28651237,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.28651237,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Apr 20th at 11:09:59 AM","depth":24,"bounds":{"left":0.105053194,"top":0.35514766,"width":0.010305851,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:09","depth":25,"bounds":{"left":0.105053194,"top":0.35514766,"width":0.010305851,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"та най добре в този случай да са два отделни евента","depth":24,"bounds":{"left":0.11801862,"top":0.3527534,"width":0.08444149,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.32801276,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.32801276,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"bounds":{"left":0.11801862,"top":0.3926576,"width":0.030917553,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.14860372,"top":0.3942538,"width":0.0029920214,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:10:56 AM","depth":23,"bounds":{"left":0.1512633,"top":0.39664805,"width":0.01761968,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:10 AM","depth":24,"bounds":{"left":0.1512633,"top":0.39664805,"width":0.01761968,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата","depth":24,"bounds":{"left":0.11801862,"top":0.41181165,"width":0.09474734,"height":0.032721467},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.3790902,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.3790902,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Galya Dimitrova","depth":23,"bounds":{"left":0.11801862,"top":0.4517159,"width":0.036236703,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":23,"bounds":{"left":0.16090426,"top":0.45331204,"width":0.0026595744,"height":0.015163607},"role_description":"text"},{"role":"AXLink","text":"Apr 20th at 11:11:08 AM","depth":23,"bounds":{"left":0.16323139,"top":0.4557063,"width":0.017952127,"height":0.011971269},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:11 AM","depth":24,"bounds":{"left":0.16323139,"top":0.4557063,"width":0.017952127,"height":0.011971269},"role_description":"text"},{"role":"AXStaticText","text":"ок","depth":24,"bounds":{"left":0.11801862,"top":0.4708699,"width":0.005319149,"height":0.015163607},"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":25,"bounds":{"left":0.13730054,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":25,"bounds":{"left":0.14793883,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":25,"bounds":{"left":0.15857713,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":25,"bounds":{"left":0.16921543,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":25,"bounds":{"left":0.17985372,"top":0.43814844,"width":0.010638298,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":25,"bounds":{"left":0.22340426,"top":0.43814844,"width":0.0003324468,"height":0.026336791},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports\nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":23,"bounds":{"left":0.10372341,"top":0.50438946,"width":0.118351065,"height":0.15323225},"value":"Здрасти имам бърз въпрос.\nАко има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports\nИма ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Здрасти имам бърз въпрос.","depth":25,"bounds":{"left":0.10771277,"top":0.5123703,"width":0.0631649,"height":0.014365523},"role_description":"text"},{"role":"AXStaticText","text":"Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports","depth":25,"bounds":{"left":0.10771277,"top":0.52992815,"width":0.10771277,"height":0.049481247},"role_description":"text"},{"role":"AXStaticText","text":"Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.","depth":25,"bounds":{"left":0.10771277,"top":0.5826017,"width":0.106715426,"height":0.06703911},"role_description":"text"},{"role":"AXButton","text":"Shift + Return to add a new line","depth":20,"bounds":{"left":0.17121011,"top":0.6935355,"width":0.048537236,"height":0.012769354},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Shift + Return","depth":21,"bounds":{"left":0.17121011,"top":0.6943336,"width":0.021609042,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"to add a new line","depth":21,"bounds":{"left":0.1924867,"top":0.6943336,"width":0.027260639,"height":0.0103751},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova, Direct Message, 1 of 7 suggestions","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.024933511,"height":0.0007980846},"role_description":"text"},{"role":"AXStaticText","text":"Channel","depth":11,"bounds":{"left":0.0,"top":0.7126895,"width":0.017287234,"height":0.0007980846},"role_description":"text"}]...
|
9100432071031166953
|
-3585546096054204073
|
click
|
hybrid
|
NULL
|
Switch workspaces… (Jiminny Inc) Has new messages
Switch workspaces… (Jiminny Inc) Has new messages
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
ai-team
alerts
backend
c-learning-people
confusion-clinic
curiosity_lab
deal-insights-dev
engineering
frontend
general
infra-changes
jiminny-bg
people-with-copilot-licences
people-with-zoom-phone-licences
platform-team
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Vasil Vasilev
Adelina Petrova
Stoyan Tomov
Nikolay Yankov
Petko Kashinski
Aneliya Angelova
Nikolay Nikolov
Mario Georgiev
Todor Stamatov
Gabriela Dureva
Galya Dimitrova
Stefka Stoyanova
Stoyan Tanev
Toast
Jira Cloud
Google Calendar
Messages
Messages
Files
Files
Untitled
Untitled
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Lukas Kovalik
Apr 20th at 10:56:36 AM
10:56 AM
например при Activity Logged или Shared Activity и няколко други пращаме споделен payloаd [
‘provider’ => $activity->getProvider(),
‘channel’ => $activity->getType(),
‘duration’ => $activity->getDuration(),
‘status’ => $activity->getStatus(),
‘recordingStatus’ => $activity->getRecordingState(),
‘private’ => $activity->getIsPrivate(),
‘logged’ => $activity->hasCrmProviderId(),
];
Apr 20th at 10:57:21 AM
10:57
не ги виждам в UI
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:03:17 AM
11:03 AM
ще пиша на съпорта им да видя как се стига до това
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:07:43 AM
11:07
о боже, намерих го
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:30 AM
11:09
мога да ползвам метаданните обаче само като правя репорти/чартове
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:50 AM
11:09
но не мога да ги ползвам ако искам на база на тях да пускам определени банери
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Apr 20th at 11:09:59 AM
11:09
та най добре в този случай да са два отделни евента
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Apr 20th at 11:10:56 AM
11:10 AM
ок, ‘report_type’ и ‘frequency’ ги оставям в payload и на двата
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Galya Dimitrova
Apr 20th at 11:11:08 AM
11:11 AM
ок
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Здрасти имам бърз въпрос.
Ако има генерирани киоск репорти, но не са пратени и нямам Ask Jiminny Report FF, трябва ли да да виждам аияreports
Има ситуации, в които са генерирани и не са още пратени. Такива в момента не излизат на по-остри проблеми, при аз променям ето посланието.
Shift + Return to add a new line
Shift + Return
to add a new line
Adelina Petrova, Direct Message, 1 of 7 suggestions
Channel
ActivityMoreslackcalVIewmistonWindowHelp@ Describe what you are looking forJiminny ... ~# random# releases# sofia-office# support# thank-yous# the_people_of_jimi...• Direct messages3 Aneliya Angelova, ...€. Vasil VasilevR. Adelina Petrova M8. Stoyan Tomovf.. Nikolay Yankov. Petko KashinskiR. Aneliya Angelova. Nikolay Nikolov&. Mario Georgiev%. Todor StamatovC. Gabriela Dureva®. Galya Dimitrova88. Stefka Stoyanova2. Stoyan Tanev E#:: Apps• ToastJira Cloud@ Google Cale.... Galya Dimitrova• Messagesr FilesUntitledhasCrmp Monday, April 20th ~не ги виждам в UIGalya Dimitrova IM 11:03 AMще пиша на сьпортаим да видя как се стиадо товао боже намепих гоїмога да ползвам метаданните обаче самокато поавя репорти/чаотовено не мога да ги ползвам ако искам на базана тях ла пускам оппелелени банерита най лобое в този случай ла са лваотлелни евентаLukas Kovalik 11:10AMoK. revort twoe и trequency ги оставям вpavload и на лватаGalya Dimitrova 11:11 AMЗдрасти имам бърз въпрос.Ако има генерирани киоск репорти, но не сапратени и нямам Ask Jiminny Report FF, трябвали да да виждам adяreportsИма ситуации. в които са генерирани и не саоще пратени. Іакива в момента на иализат напо-остри проблеми. при аз промі Send nowпосланието.+ Aa €C< 40ll O SupportDaily-in1h19m © G 100%Ca& Thu 23 Apr 13:41:48©github.com/jiminny/New TabAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X+ New TabJy 20541 extract common traits #12008Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traitsapp () call inside ActivityPlaybookTrait: :getPlaybookapp/Services/Crm/Helpers/ActivityPlaybookTrait.php:35SplaybookResolver = app(Playbookresolver:: class);Using the service locator in the middle of a method makes this harder to test in isolation. CrmHelperRepository wasrightly injected — PlaybookResolver could follow the same pattern. Not a blocker, but worth noting as the trait ismeant to improve testability.getPlaybookCategory ordering is implicitapp/Services/Crm/Helpers/CrmHelperRepository.php:22→›orderBy("1d, "desc")Ordering by id desc and taking the first result is a tie-breaking heuristic (take the newest duplicate) but this intentionisn't documented. A comment explaining why duplicates may exist and the resolution strategy would prevent futuresurprises.contact id bypasses the accessor patternapp/Services/Crm/Listeners/ConvertLeadActivities.php:124'contact_id' => $convertedLead->getAttribute('converted_contact_id'),Other converted IDs in the same method use typed accessor methods (e.g. getopportunity() , getAccount () ), butconverted contact id goes directly through getAttribute. Minor inconsistency.Positives worth calling out• The N+1 fix in ConvertLeadActivities is well done - computing the update payload once and applying it to allactivities is clearly the right approach.• The withDelay docblock is excellent: it explains why the delay exists, not just what it does. That context would bevery hard to reconstruct later.Chaneieu tertcetwyrypse) te ant poyotegtreyayi: grepaybno th)/ ule tat oreuch cales (inctuing• The Dispatcher injection in SalesforcelService constructor is a good improvement for testability over theevent() helner...
|
75177
|
|
19717
|
NULL
|
0
|
2026-04-15T07:55:32.619927+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776239732619_m2.jpg...
|
Firefox
|
For you - Confluence — Work
|
1
|
jiminny.atlassian.net/wiki/home
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Close tab
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar Ctrl [
Collapse sidebar
Ctrl
[
Switch sites or apps
Switch sites or apps
Confluence
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
2 Notifications
2 Notifications
Help
Help
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Spaces
Spaces
Apps
Apps
Starred spaces
Lukas Kovalik
Lukas Kovalik
Success
Success
View all spaces
View all spaces
Jira , (opens new window)
Jira
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
More
More
Side Navigation Drag Handle
Confluence Home
Confluence Home
Pick up where you left off
Pick up where you left off
Configure SSH access to multiple environment
Engineering
Engineering
Visited
22 hours ago
Start here
Engineering
Engineering
Visited
14 April 2026
Change playbook activity field
Engineering
Engineering
Visited
7 April 2026
How to Consume private NPM packages
Engineering
Engineering
Visited
20 March 2026
AI Signals & Alerts
Product
Product
Visited
11 March 2026
PHP 8.x upgrade
Engineering
Engineering
Visited
9 March 2026
Discover what's happening
Discover what's happening
Sort by: Most relevant
Sort by: Most relevant
Edit feed
Edit feed
Following
Following
Popular
Popular
Announcements
Announcements
Summaries use AI. Verify results.
Good response
Bad response
We’re keeping you in the loop
We’re keeping you in the loop
Stay in-the-know by following people and spaces. Their activity will show up in your feed, but you won’t receive email notifications about it. Add to, or edit, your feed anytime.
Edit feed
Edit feed
Close message box
Close message box
Adelina Petrova updated
Adelina Petrova
updated
•
14 April 2026
Recent actions
Recent actions
Desktop app to record a meetings without visible Notetaker
Desktop app to record a meetings without visible Notetaker
Owned by
Adelina Petrova, profile
More information about this user
Adelina Petrova
•
Product, space
Product
Star
A desktop app will be developed to record meetings without a visible notetaker, increasing customer confidence and reducing friction, and generating more conversation data to improve insights and coaching.
Add reaction
8 comments
Exit feed
Exit feed
Nikolay Nikolov updated
Nikolay Nikolov
updated
•
3 April 2026
Recent actions
Recent actions
[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour
[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour
Owned by
Nikolay Nikolov, profile
More information about this user
Nikolay Nikolov
•
Engineering, space
Engineering
Star
Reducing queue wait time to under 1 hour requires reducing jobs or increasing processing rate, with options including increasing worker limit, faster auto-scale triggers, dedicated workers for CRM-sync, and optimizing job execution.
Add reaction
Exit feed
Exit feed
Nikolay Nikolov updated 2 times
Nikolay Nikolov
updated 2 times
•
24 March 2026
Recent actions
Recent actions
Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency
Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency
Owned by...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Team - Backlog - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Service-Desk - Queues - Platform team - Service space - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,550) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.11736111,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.25486112,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":10,"bounds":{"left":0.10625,"top":0.068055555,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":11,"bounds":{"left":0.10625,"top":0.08472222,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":12,"bounds":{"left":0.10625,"top":0.08472222,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":11,"bounds":{"left":0.10625,"top":0.10138889,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":12,"bounds":{"left":0.10625,"top":0.10138889,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":11,"bounds":{"left":0.10625,"top":0.11805555,"width":0.034375,"height":0.0125},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":12,"bounds":{"left":0.10625,"top":0.11805555,"width":0.034375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar Ctrl [","depth":10,"bounds":{"left":0.0984375,"top":0.050694443,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar","depth":12,"bounds":{"left":0.1046875,"top":0.057638887,"width":0.04296875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ctrl","depth":13,"bounds":{"left":0.15234375,"top":0.057638887,"width":0.009375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"[","depth":13,"bounds":{"left":0.16953126,"top":0.057638887,"width":0.001953125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Switch sites or apps","depth":12,"bounds":{"left":0.1125,"top":0.050694443,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Switch sites or apps","depth":14,"bounds":{"left":0.11875,"top":0.05486111,"width":0.051953126,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence","depth":10,"bounds":{"left":0.128125,"top":0.050694443,"width":0.034765624,"height":0.022222223},"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,"bounds":{"left":0.38828126,"top":0.05486111,"width":0.28515625,"height":0.013888889},"help_text":"","placeholder":"Search your Google Drive Docs, Sheets and Slides","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXMenuButton","text":"Create","depth":10,"bounds":{"left":0.6832031,"top":0.050694443,"width":0.035546876,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Create","depth":12,"bounds":{"left":0.6964844,"top":0.055555556,"width":0.017578125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":13,"bounds":{"left":0.9097656,"top":0.050694443,"width":0.0421875,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":15,"bounds":{"left":0.9230469,"top":0.055555556,"width":0.02421875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"2 Notifications","depth":13,"bounds":{"left":0.95351565,"top":0.050694443,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2 Notifications","depth":15,"bounds":{"left":0.9597656,"top":0.05486111,"width":0.037109375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":13,"bounds":{"left":0.9675781,"top":0.050694443,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":15,"bounds":{"left":0.97382814,"top":0.05486111,"width":0.01171875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":13,"bounds":{"left":0.9824219,"top":0.050694443,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"For you","depth":13,"bounds":{"left":0.0984375,"top":0.08680555,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":16,"bounds":{"left":0.1109375,"top":0.09166667,"width":0.01953125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent","depth":13,"bounds":{"left":0.0984375,"top":0.10902778,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":16,"bounds":{"left":0.1109375,"top":0.11388889,"width":0.018359374,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Starred","depth":13,"bounds":{"left":0.0984375,"top":0.13125,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":16,"bounds":{"left":0.1109375,"top":0.13611111,"width":0.019140625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Spaces","depth":13,"bounds":{"left":0.0984375,"top":0.15347221,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Spaces","depth":16,"bounds":{"left":0.1109375,"top":0.15833333,"width":0.01953125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":13,"bounds":{"left":0.0984375,"top":0.17569445,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":16,"bounds":{"left":0.1109375,"top":0.18055555,"width":0.013671875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Starred spaces","depth":13,"bounds":{"left":0.10078125,"top":0.2125,"width":0.034375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Lukas Kovalik","depth":13,"bounds":{"left":0.0984375,"top":0.22847222,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":16,"bounds":{"left":0.1109375,"top":0.23333333,"width":0.035546876,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Success","depth":13,"bounds":{"left":0.0984375,"top":0.25069445,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Success","depth":16,"bounds":{"left":0.1109375,"top":0.25555557,"width":0.022265624,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"View all spaces","depth":13,"bounds":{"left":0.0984375,"top":0.27291667,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"View all spaces","depth":16,"bounds":{"left":0.1109375,"top":0.2777778,"width":0.040625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jira , (opens new window)","depth":14,"bounds":{"left":0.0984375,"top":0.30347222,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jira","depth":18,"bounds":{"left":0.1109375,"top":0.30833334,"width":0.009765625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.0984375,"top":0.31527779,"width":0.05703125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":14,"bounds":{"left":0.0984375,"top":0.32569444,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":18,"bounds":{"left":0.1109375,"top":0.33055556,"width":0.0171875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":16,"bounds":{"left":0.0984375,"top":0.3375,"width":0.05703125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":15,"bounds":{"left":0.17890625,"top":0.32847223,"width":0.0046875,"height":0.016666668},"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":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More","depth":13,"bounds":{"left":0.0984375,"top":0.35625,"width":0.09375,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.1109375,"top":0.3611111,"width":0.013671875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Side Navigation Drag Handle","depth":14,"bounds":{"left":0.2578125,"top":0.08541667,"width":0.07421875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Confluence Home","depth":12,"bounds":{"left":0.196875,"top":0.07847222,"width":0.000390625,"height":0.00069444446},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Confluence Home","depth":13,"bounds":{"left":0.196875,"top":0.07847222,"width":0.049609374,"height":0.041666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Pick up where you left off","depth":12,"bounds":{"left":0.37109375,"top":0.10069445,"width":0.0671875,"height":0.013888889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pick up where you left off","depth":13,"bounds":{"left":0.37109375,"top":0.10138889,"width":0.0671875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Configure SSH access to multiple environment","depth":14,"bounds":{"left":0.37109375,"top":0.12569444,"width":0.14570312,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Engineering","depth":14,"bounds":{"left":0.39257812,"top":0.15138888,"width":0.026171874,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":15,"bounds":{"left":0.39257812,"top":0.15208334,"width":0.026171874,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.37773436,"top":0.17291667,"width":0.01484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"22 hours ago","depth":15,"bounds":{"left":0.39375,"top":0.17291667,"width":0.029296875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Start here","depth":14,"bounds":{"left":0.52304685,"top":0.12569444,"width":0.14570312,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Engineering","depth":14,"bounds":{"left":0.5445312,"top":0.15138888,"width":0.026171874,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":15,"bounds":{"left":0.5445312,"top":0.15208334,"width":0.026171874,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.5296875,"top":0.17291667,"width":0.01484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14 April 2026","depth":15,"bounds":{"left":0.54609376,"top":0.17291667,"width":0.029296875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Change playbook activity field","depth":14,"bounds":{"left":0.675,"top":0.12569444,"width":0.14609376,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Engineering","depth":14,"bounds":{"left":0.6964844,"top":0.15138888,"width":0.0265625,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":15,"bounds":{"left":0.6964844,"top":0.15208334,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.6816406,"top":0.17291667,"width":0.015234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"7 April 2026","depth":15,"bounds":{"left":0.69804686,"top":0.17291667,"width":0.026953125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"How to Consume private NPM packages","depth":14,"bounds":{"left":0.37109375,"top":0.20625,"width":0.14570312,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Engineering","depth":14,"bounds":{"left":0.39257812,"top":0.23194444,"width":0.026171874,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":15,"bounds":{"left":0.39257812,"top":0.2326389,"width":0.026171874,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.37773436,"top":0.2534722,"width":0.01484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 March 2026","depth":15,"bounds":{"left":0.39375,"top":0.2534722,"width":0.034375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"AI Signals & Alerts","depth":14,"bounds":{"left":0.52304685,"top":0.20625,"width":0.14570312,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Product","depth":14,"bounds":{"left":0.5445312,"top":0.23194444,"width":0.0171875,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product","depth":15,"bounds":{"left":0.5445312,"top":0.2326389,"width":0.0171875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.5296875,"top":0.2534722,"width":0.01484375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"11 March 2026","depth":15,"bounds":{"left":0.54609376,"top":0.2534722,"width":0.03203125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"PHP 8.x upgrade","depth":14,"bounds":{"left":0.675,"top":0.20625,"width":0.14609376,"height":0.06944445},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXLink","text":"Engineering","depth":14,"bounds":{"left":0.6964844,"top":0.23194444,"width":0.0265625,"height":0.011111111},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":15,"bounds":{"left":0.6964844,"top":0.2326389,"width":0.0265625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Visited","depth":15,"bounds":{"left":0.6816406,"top":0.2534722,"width":0.015234375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"9 March 2026","depth":15,"bounds":{"left":0.69804686,"top":0.2534722,"width":0.03125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Discover what's happening","depth":12,"bounds":{"left":0.37109375,"top":0.29652777,"width":0.072265625,"height":0.013888889},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Discover what's happening","depth":13,"bounds":{"left":0.37109375,"top":0.29722223,"width":0.072265625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Sort by: Most relevant","depth":12,"bounds":{"left":0.71132815,"top":0.2923611,"width":0.07382812,"height":0.022222223},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sort by: Most relevant","depth":14,"bounds":{"left":0.71601564,"top":0.29722223,"width":0.057421874,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit feed","depth":12,"bounds":{"left":0.78828126,"top":0.2923611,"width":0.0328125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit feed","depth":14,"bounds":{"left":0.79296875,"top":0.29722223,"width":0.0234375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Following","depth":13,"bounds":{"left":0.37109375,"top":0.32291666,"width":0.0390625,"height":0.022222223},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Following","depth":15,"bounds":{"left":0.38242188,"top":0.32777777,"width":0.02421875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Popular","depth":13,"bounds":{"left":0.41328126,"top":0.32291666,"width":0.034765624,"height":0.022222223},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Popular","depth":15,"bounds":{"left":0.42460936,"top":0.32777777,"width":0.019921875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Announcements","depth":13,"bounds":{"left":0.45117188,"top":0.32291666,"width":0.05703125,"height":0.022222223},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Announcements","depth":14,"bounds":{"left":0.4625,"top":0.32777777,"width":0.0421875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Summaries use AI. Verify results.","depth":13,"bounds":{"left":0.378125,"top":0.36666667,"width":0.07382812,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Good response","depth":13,"bounds":{"left":0.45742187,"top":0.36458334,"width":0.00625,"height":0.011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Bad response","depth":13,"bounds":{"left":0.46835938,"top":0.36458334,"width":0.00625,"height":0.011111111},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"We’re keeping you in the loop","depth":13,"bounds":{"left":0.38085938,"top":0.4097222,"width":0.33203125,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"We’re keeping you in the loop","depth":14,"bounds":{"left":0.38085938,"top":0.41111112,"width":0.0859375,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Stay in-the-know by following people and spaces. Their activity will show up in your feed, but you won’t receive email notifications about it. Add to, or edit, your feed anytime.","depth":14,"bounds":{"left":0.38085938,"top":0.43333334,"width":0.3265625,"height":0.030555556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Edit feed","depth":13,"bounds":{"left":0.38085938,"top":0.48194444,"width":0.032421876,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Edit feed","depth":15,"bounds":{"left":0.38554686,"top":0.48680556,"width":0.023046875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close message box","depth":13,"bounds":{"left":0.80195314,"top":0.4097222,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Close message box","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Adelina Petrova updated","depth":14,"bounds":{"left":0.39804688,"top":0.55,"width":0.06367187,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Adelina Petrova","depth":17,"bounds":{"left":0.39804688,"top":0.55069447,"width":0.040625,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"updated","depth":17,"bounds":{"left":0.44023436,"top":0.55069447,"width":0.021484375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":15,"bounds":{"left":0.46328124,"top":0.55069447,"width":0.003125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14 April 2026","depth":14,"bounds":{"left":0.46796876,"top":0.55069447,"width":0.033984374,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent actions","depth":13,"bounds":{"left":0.7746094,"top":0.55,"width":0.03828125,"height":0.013888889},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent actions","depth":15,"bounds":{"left":0.7746094,"top":0.55069447,"width":0.03828125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Desktop app to record a meetings without visible Notetaker","depth":16,"bounds":{"left":0.40585938,"top":0.58125,"width":0.1765625,"height":0.016666668},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Desktop app to record a meetings without visible Notetaker","depth":17,"bounds":{"left":0.40585938,"top":0.58263886,"width":0.175,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Owned by","depth":16,"bounds":{"left":0.39804688,"top":0.6013889,"width":0.027734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Adelina Petrova, profile","depth":16,"bounds":{"left":0.42578125,"top":0.6006944,"width":0.040234376,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about this user","depth":18,"bounds":{"left":0.42578125,"top":0.6013889,"width":0.040234376,"height":0.0125},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Adelina Petrova","depth":19,"bounds":{"left":0.42578125,"top":0.6013889,"width":0.040234376,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":15,"bounds":{"left":0.4675781,"top":0.6013889,"width":0.003125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Product, space","depth":15,"bounds":{"left":0.47226563,"top":0.6006944,"width":0.0203125,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product","depth":17,"bounds":{"left":0.47226563,"top":0.6013889,"width":0.0203125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Star","depth":17,"bounds":{"left":0.80195314,"top":0.5784722,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"A desktop app will be developed to record meetings without a visible notetaker, increasing customer confidence and reducing friction, and generating more conversation data to improve insights and coaching.","depth":15,"bounds":{"left":0.39804688,"top":0.6236111,"width":0.4015625,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add reaction","depth":15,"bounds":{"left":0.39804688,"top":0.65902776,"width":0.0125,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"8 comments","depth":15,"bounds":{"left":0.7867187,"top":0.6625,"width":0.027734375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Exit feed","depth":14,"bounds":{"left":0.5796875,"top":0.6958333,"width":0.032421876,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Exit feed","depth":16,"bounds":{"left":0.584375,"top":0.70069444,"width":0.023046875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Nikolay Nikolov updated","depth":14,"bounds":{"left":0.39804688,"top":0.70763886,"width":0.06289063,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.39804688,"top":0.7083333,"width":0.03984375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"updated","depth":17,"bounds":{"left":0.43945312,"top":0.7083333,"width":0.021484375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":15,"bounds":{"left":0.4625,"top":0.7083333,"width":0.003125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"3 April 2026","depth":14,"bounds":{"left":0.4671875,"top":0.7083333,"width":0.031640626,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent actions","depth":13,"bounds":{"left":0.7746094,"top":0.70763886,"width":0.03828125,"height":0.013888889},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent actions","depth":15,"bounds":{"left":0.7746094,"top":0.7083333,"width":0.03828125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour","depth":16,"bounds":{"left":0.40585938,"top":0.73888886,"width":0.18359375,"height":0.016666668},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour","depth":17,"bounds":{"left":0.40585938,"top":0.74027777,"width":0.18203124,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Owned by","depth":16,"bounds":{"left":0.39804688,"top":0.7590278,"width":0.027734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Nikolay Nikolov, profile","depth":16,"bounds":{"left":0.42578125,"top":0.7583333,"width":0.039453126,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXMenuButton","text":"More information about this user","depth":18,"bounds":{"left":0.42578125,"top":0.7590278,"width":0.039453126,"height":0.0125},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":19,"bounds":{"left":0.42578125,"top":0.7590278,"width":0.039453126,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":15,"bounds":{"left":0.46679688,"top":0.7590278,"width":0.003125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Engineering, space","depth":15,"bounds":{"left":0.47148436,"top":0.7583333,"width":0.030859375,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Engineering","depth":17,"bounds":{"left":0.47148436,"top":0.7590278,"width":0.030859375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Star","depth":17,"bounds":{"left":0.80195314,"top":0.7361111,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Reducing queue wait time to under 1 hour requires reducing jobs or increasing processing rate, with options including increasing worker limit, faster auto-scale triggers, dedicated workers for CRM-sync, and optimizing job execution.","depth":15,"bounds":{"left":0.39804688,"top":0.78125,"width":0.409375,"height":0.02638889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add reaction","depth":15,"bounds":{"left":0.39804688,"top":0.81666666,"width":0.0125,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Exit feed","depth":14,"bounds":{"left":0.5796875,"top":0.85347223,"width":0.032421876,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Exit feed","depth":16,"bounds":{"left":0.584375,"top":0.85833335,"width":0.023046875,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Nikolay Nikolov updated 2 times","depth":14,"bounds":{"left":0.39804688,"top":0.86527777,"width":0.08320312,"height":0.013888889},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":17,"bounds":{"left":0.39804688,"top":0.8659722,"width":0.03984375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"updated 2 times","depth":17,"bounds":{"left":0.43945312,"top":0.8659722,"width":0.041796874,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"•","depth":15,"bounds":{"left":0.4828125,"top":0.8659722,"width":0.003125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"24 March 2026","depth":14,"bounds":{"left":0.4875,"top":0.8659722,"width":0.03984375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Recent actions","depth":13,"bounds":{"left":0.7746094,"top":0.86527777,"width":0.03828125,"height":0.013888889},"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent actions","depth":15,"bounds":{"left":0.7746094,"top":0.8659722,"width":0.03828125,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency","depth":16,"bounds":{"left":0.40585938,"top":0.89652777,"width":0.303125,"height":0.016666668},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency","depth":17,"bounds":{"left":0.40585938,"top":0.8979167,"width":0.3015625,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Owned by","depth":16,"bounds":{"left":0.39804688,"top":0.9166667,"width":0.027734375,"height":0.0125},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
9100330383346770920
|
6870565631958180463
|
idle
|
accessibility
|
NULL
|
Platform Team - Backlog - Jira
Service-Desk - Queu Platform Team - Backlog - Jira
Service-Desk - Queues - Platform team - Service space - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,550) - [EMAIL] - Jiminny Mail
For you - Confluence
For you - Confluence
Close tab
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Top Bar
Top Bar
Sidebar
Sidebar
Main Content
Main Content
Collapse sidebar Ctrl [
Collapse sidebar
Ctrl
[
Switch sites or apps
Switch sites or apps
Confluence
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
2 Notifications
2 Notifications
Help
Help
[EMAIL]
For you
For you
Recent
Recent
Starred
Starred
Spaces
Spaces
Apps
Apps
Starred spaces
Lukas Kovalik
Lukas Kovalik
Success
Success
View all spaces
View all spaces
Jira , (opens new window)
Jira
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
More
More
Side Navigation Drag Handle
Confluence Home
Confluence Home
Pick up where you left off
Pick up where you left off
Configure SSH access to multiple environment
Engineering
Engineering
Visited
22 hours ago
Start here
Engineering
Engineering
Visited
14 April 2026
Change playbook activity field
Engineering
Engineering
Visited
7 April 2026
How to Consume private NPM packages
Engineering
Engineering
Visited
20 March 2026
AI Signals & Alerts
Product
Product
Visited
11 March 2026
PHP 8.x upgrade
Engineering
Engineering
Visited
9 March 2026
Discover what's happening
Discover what's happening
Sort by: Most relevant
Sort by: Most relevant
Edit feed
Edit feed
Following
Following
Popular
Popular
Announcements
Announcements
Summaries use AI. Verify results.
Good response
Bad response
We’re keeping you in the loop
We’re keeping you in the loop
Stay in-the-know by following people and spaces. Their activity will show up in your feed, but you won’t receive email notifications about it. Add to, or edit, your feed anytime.
Edit feed
Edit feed
Close message box
Close message box
Adelina Petrova updated
Adelina Petrova
updated
•
14 April 2026
Recent actions
Recent actions
Desktop app to record a meetings without visible Notetaker
Desktop app to record a meetings without visible Notetaker
Owned by
Adelina Petrova, profile
More information about this user
Adelina Petrova
•
Product, space
Product
Star
A desktop app will be developed to record meetings without a visible notetaker, increasing customer confidence and reducing friction, and generating more conversation data to improve insights and coaching.
Add reaction
8 comments
Exit feed
Exit feed
Nikolay Nikolov updated
Nikolay Nikolov
updated
•
3 April 2026
Recent actions
Recent actions
[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour
[Draft] Strategies to Reduce Queue Wait Time to Under 1 Hour
Owned by
Nikolay Nikolov, profile
More information about this user
Nikolay Nikolov
•
Engineering, space
Engineering
Star
Reducing queue wait time to under 1 hour requires reducing jobs or increasing processing rate, with options including increasing worker limit, faster auto-scale triggers, dedicated workers for CRM-sync, and optimizing job execution.
Add reaction
Exit feed
Exit feed
Nikolay Nikolov updated 2 times
Nikolay Nikolov
updated 2 times
•
24 March 2026
Recent actions
Recent actions
Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency
Nudge System: Implementing indexed_at for Comprehensive Activity Tracking and Memory Efficiency
Owned by...
|
NULL
|
|
58660
|
1261
|
12
|
2026-04-20T12:58:05.655218+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776689885655_m2.jpg...
|
PhpStorm
|
PhpStorm
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhostormFV faVsco.jsProiect>• Helpersv D Hubspo PhostormFV faVsco.jsProiect>• Helpersv D HubspotAccountSyncStrategy)M ActionsD ContactSyncStrategy> DDTO> D Fields› JournalMetadataOpportunitysyncstrateay>@ Concernsc) HubspotLastmoamedbyrrorilesyncstrate© HubspotLastModifiedCreatedRecentlvOpc) HubsporLas.mooiiedCreareckecendvs.v© HubspotLastModifiedOpenSyncStrategy-lC) HubspotLastModitiedSvncStrateav.ohoc) HubspotSinalesvncStrateav.ohoC. HubspotSvncStrateavBase.ohv© HubspotWebhookBatchSvncStrateav.ohr 394 Gjv Padination© HubspotPaginationService.ohn420(c) PadinationConfia.oho© PaginationState.php› ProspectSearchStrategyD Redisv M ServiceTraitc423 01 6t452T OpportunitySyncTrait.phpT SyncCrmEntitiesTrait.phpT SyncFieldsTrait.phpT WriteCrmTrait.phpMutilc454456457458(c) RatchSvncCollector.ong© BatchSyncRedisService.php© Client.phpc) ClosedDealStagesService.phoDealFieldsService.phoC) DecorateActivity.phpC) FieldDefinitions.php461 ©462463464465C) FieldTvpeConverter.pho=uosootclientintertace.onoc)-uosootlokenManader.ond467468C) PavloadBuilder.ohv(C) [EMAIL]@ ResponseNormalize.ohn470C) Service.ohr471 CtC)SvncFieldAction.ohv© SyncRelatedActivityManager.phpc) WehhookSvncRatchProceccor.nhnlM Intearation Ann>Mlistenerc© AutomatedReportsCommand.phpcImportOpportunityBatch.php(©)ImportContactBatch.php© Client.php(C) HubspotPaqinationService.php© Service.phpAutomatedReportsController.phpphp apiv2.phpC) TrackProviderInstalledEvent.php@ RequestGenerateReportJob.ph(C) AutomatedReportResult.oho(C) AutomatedReport.ohotrait SyncCrmEntitiesTrait* For regular sync webhook batchSyncCompanies is used:* @panam Carbon Ssince Fetch companies modified after this date* @param Carbon|null $to Optional end date for modification range* @return int Number of companies successfully syncedpublic function syncAccounts(Carbon Ssince. ?Carbon $to = null): int{...}* Oinheritdocpublic function svncAccount ((string Scrmid): ?Account-...* Process webhook-collected contact batches.* Drains Redis sets containing contact CRM IDs collected from webhook events* and disoatches ImoortContactBatch iobs for batch arocessino.* Qreturn int Number of contact IDs dispatched to jobsLusagespublic function batchSyncContacts: int$configld = Sthis->team->getCrmConfiguration->getIdO:return Sthis->batchProcessor->processBatchesFor0bjectType(objectType: WebhookSyncBatchProcessor::0BJECT_TYPE_CONTACTScont1010public function importContactBatchByIds(array $crmIds): arraysuccess count => 0"failed ids' = [l.'errorst => 0>0 lbl100% C47• Mon 20 Apr 15:58:05L AskJiminnyReportActivityServiceTestA SF [jiminny@localhost]A HS_local [jiminny@localhost]CascadeA console (PROD] x A console (EU]A console [STAGING]Retactor ConnectionCRM Initial Sync OverD60.569570A50 230 A v 572573574-575576577578—579588581582_C035845861- cor-588590l₴59}593594=600601E002.603=604605—606607608do jiminny v034 A1 A34 M62 ^ -SELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, аcт.SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE •* END) ASU.emair,t. ouer. id FROM social,accounts saJOIN users u on u.id = sa.sociable_idVHERE u.team_id = 581 and sa.provider = 'salesforce';SELECT * FROM automated_report_results order by id desc;ollonrtam tonctinosselect * trom team teatures where teature 10 = 40%select * from teams where id = 556-select * fromiIreports where 10 = 54: # 4f0041f6-dcf0-3000-0339-734SELECT * FROMautomated_report_results WHERE Uuid_to_bin('822fa41b-afd3-43a9select * from automated renort results order oy 1d desciSELECT * FROM automated_report_results WHERE id = 1919;select * from automated_report_results WHERE report id = 54;select * from opportunities where id = 7594349;select * from nlavbooks where team 1d = 711: # event 226147SELECT * FROM playbook_categories WHERE playbook_id = 5515;SELECT * FROM crm_fields WHERE id = 226147:SELECT * FROM crm_field_values WHERE crm_field_id = 226147;SELECT * FROM crm_configurations WHERE id = 692:RELECTCONCAT(u.id, CASE WHEN u.id = t.owner id THEN ' (owner)' ELSE •* END) Av.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1..n<->1: on t.id = u.team_idVHERE u.team_id = 711 and sa.provider = 'salesforce':BELEET A FRON onR- profstes ep JOtil users U 1.nesail on u.id + Gp. uSer-2i0 Ni+0 ..syncProfiles() (HubSpot or Salesforce) calls ProfileRepository: :update0rCreateProfile(...) and a new Crm\Profile row isinsented, Prottleuoserver.pnp:te-to tlres Protttecreated.EventServiceProvider.ono: 139-142 suoscribes two llsteners:• Listeners\ crm|SyncProtledpportunitles (SyncProt1le0pportunities.ono:42-103) - apolies to HubSoot. Salestorce, Bulllhorn. CooperPipedrive, Zoho. For each new profile it:1. Dispatches SyncProfileMetadata (see below).2. Ensures a Deal Insiahts lavout exists(createDeaUInsiahtsLavoutt DoesNotExist. lines 105-146) Via CrmOwnerResolver + buildLavout3. Computes since = configurationSettingsService->getSyncPeriod($crmConfiguration).4. Dispatches SyncOpportunitiesJob with strategy LAST_MODIFIED_BY_PROFTLE_SYNCOPPORTUNITY_STRATEGY, either as a single job or, when requress urdingwindowsearch is true salestorce large tenants, chopped into rolling s/-day windows via limererzoditeracor• Listeners\Crm\SyncProfileLeads (Syncprof1 LeLeads•php:32-79) - Zoho-only; dispatches SyncLeads • Hubspot/salestorce do not run aper-prome ledd sync nere,• SyncProfileMetadata (Syncprot1 LeMetadata•php:39-113) - runs per profile/user: crmService->syncProfileFields( ; and for providersimplementing SyncCrmProfileRecordTypesInterface (Salesforce) it also calls syncProfileRecordTypes() .End-to-end flow summary• HubSpot•Team creation → no CRM sync.•Owner connects Hubspot OAuth (SocialAccountConnected → no automatic data import (Hubspot'S onActivityProviderIntegrated is ano-op; BootstrapIntegrationApp only fires for Integration.app providers). Initial metadata is typically triggered via CrmAccountReconnected → ImoortMetadata → crm:svnc-team-metadata which in turn runs syncOrganization → importStages → importBusinessProcesses • imdortRecordTypes syncProfiles → syncFields• syncProfileso) creates Profile rows → ProfileCreated → SvncProfileOoportunities creates Deal Insiahts lavout + dispatches SyncOpportunitiesJob with the profile-modified strategy) + SyncProfileMetadata (syncs that user's profile fields).• Salesforce•Team creation → onlv the optional salestorce Account stamo in UodateSalesforceAccount it a linked account existsSame reconnect-driven metadata path: SyncTeamMetadata → sync0rganization/importStages/importBusinessProcesses/importRecordTypes/syncProfiles/svncFields Salesforce implementationsin Service.ono.•syncProfiles() SOQL-matches team members, creating Profile rows with edition + crm_ profile id ProfileCreated → SyncProfiluses TimePeriodIterator sliding window to avoid SOOL limits) + SyncProfileMetadata which also runs syncProfileRecordTypes() because Salesforce implements SyncCrmProfileRecordTypesInterface.Notahle ohcorvationeHubSnot and Salesforce do not have a direct CocialAccountConnected @ initial-svne wire› the metadata imnort runs via the reconnedievent/listener (CrmAccountReconnected → ImportMetadata ). Onlv the Integration.app family has a first-connect bootstrap ( BootstrapIntegrationApp → TeamInitialSyncJob ).• The per-orofile opportunity backfill is entirely driven by Profi leCreated, so new deallopportunity ingestion starts only after syncProfilesonas resolved Ckm owners/users to Jiminny users.The opportunity.sync.uses.strateoy LAST MODTETED BY PROFTIE SYNG OPPORTINTTY STRATEGY andrespects team-levelLaetSvncPeriod andlreauiresStidingWindowSearch settingswhat obiects are sunced on team creation and orofile creation•0 (+]W Windsurf Teams 465:53io 4 spaces...
|
NULL
|
9099709255613347515
|
NULL
|
click
|
ocr
|
NULL
|
PhostormFV faVsco.jsProiect>• Helpersv D Hubspo PhostormFV faVsco.jsProiect>• Helpersv D HubspotAccountSyncStrategy)M ActionsD ContactSyncStrategy> DDTO> D Fields› JournalMetadataOpportunitysyncstrateay>@ Concernsc) HubspotLastmoamedbyrrorilesyncstrate© HubspotLastModifiedCreatedRecentlvOpc) HubsporLas.mooiiedCreareckecendvs.v© HubspotLastModifiedOpenSyncStrategy-lC) HubspotLastModitiedSvncStrateav.ohoc) HubspotSinalesvncStrateav.ohoC. HubspotSvncStrateavBase.ohv© HubspotWebhookBatchSvncStrateav.ohr 394 Gjv Padination© HubspotPaginationService.ohn420(c) PadinationConfia.oho© PaginationState.php› ProspectSearchStrategyD Redisv M ServiceTraitc423 01 6t452T OpportunitySyncTrait.phpT SyncCrmEntitiesTrait.phpT SyncFieldsTrait.phpT WriteCrmTrait.phpMutilc454456457458(c) RatchSvncCollector.ong© BatchSyncRedisService.php© Client.phpc) ClosedDealStagesService.phoDealFieldsService.phoC) DecorateActivity.phpC) FieldDefinitions.php461 ©462463464465C) FieldTvpeConverter.pho=uosootclientintertace.onoc)-uosootlokenManader.ond467468C) PavloadBuilder.ohv(C) [EMAIL]@ ResponseNormalize.ohn470C) Service.ohr471 CtC)SvncFieldAction.ohv© SyncRelatedActivityManager.phpc) WehhookSvncRatchProceccor.nhnlM Intearation Ann>Mlistenerc© AutomatedReportsCommand.phpcImportOpportunityBatch.php(©)ImportContactBatch.php© Client.php(C) HubspotPaqinationService.php© Service.phpAutomatedReportsController.phpphp apiv2.phpC) TrackProviderInstalledEvent.php@ RequestGenerateReportJob.ph(C) AutomatedReportResult.oho(C) AutomatedReport.ohotrait SyncCrmEntitiesTrait* For regular sync webhook batchSyncCompanies is used:* @panam Carbon Ssince Fetch companies modified after this date* @param Carbon|null $to Optional end date for modification range* @return int Number of companies successfully syncedpublic function syncAccounts(Carbon Ssince. ?Carbon $to = null): int{...}* Oinheritdocpublic function svncAccount ((string Scrmid): ?Account-...* Process webhook-collected contact batches.* Drains Redis sets containing contact CRM IDs collected from webhook events* and disoatches ImoortContactBatch iobs for batch arocessino.* Qreturn int Number of contact IDs dispatched to jobsLusagespublic function batchSyncContacts: int$configld = Sthis->team->getCrmConfiguration->getIdO:return Sthis->batchProcessor->processBatchesFor0bjectType(objectType: WebhookSyncBatchProcessor::0BJECT_TYPE_CONTACTScont1010public function importContactBatchByIds(array $crmIds): arraysuccess count => 0"failed ids' = [l.'errorst => 0>0 lbl100% C47• Mon 20 Apr 15:58:05L AskJiminnyReportActivityServiceTestA SF [jiminny@localhost]A HS_local [jiminny@localhost]CascadeA console (PROD] x A console (EU]A console [STAGING]Retactor ConnectionCRM Initial Sync OverD60.569570A50 230 A v 572573574-575576577578—579588581582_C035845861- cor-588590l₴59}593594=600601E002.603=604605—606607608do jiminny v034 A1 A34 M62 ^ -SELECT * FROM crm_configurations WHERE id = 555;SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, аcт.SELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE •* END) ASU.emair,t. ouer. id FROM social,accounts saJOIN users u on u.id = sa.sociable_idVHERE u.team_id = 581 and sa.provider = 'salesforce';SELECT * FROM automated_report_results order by id desc;ollonrtam tonctinosselect * trom team teatures where teature 10 = 40%select * from teams where id = 556-select * fromiIreports where 10 = 54: # 4f0041f6-dcf0-3000-0339-734SELECT * FROMautomated_report_results WHERE Uuid_to_bin('822fa41b-afd3-43a9select * from automated renort results order oy 1d desciSELECT * FROM automated_report_results WHERE id = 1919;select * from automated_report_results WHERE report id = 54;select * from opportunities where id = 7594349;select * from nlavbooks where team 1d = 711: # event 226147SELECT * FROM playbook_categories WHERE playbook_id = 5515;SELECT * FROM crm_fields WHERE id = 226147:SELECT * FROM crm_field_values WHERE crm_field_id = 226147;SELECT * FROM crm_configurations WHERE id = 692:RELECTCONCAT(u.id, CASE WHEN u.id = t.owner id THEN ' (owner)' ELSE •* END) Av.email,sa.*,t.owner_id FROM social_accounts saJOIN users u on u.id = sa.sociable idJOIN teams t 1..n<->1: on t.id = u.team_idVHERE u.team_id = 711 and sa.provider = 'salesforce':BELEET A FRON onR- profstes ep JOtil users U 1.nesail on u.id + Gp. uSer-2i0 Ni+0 ..syncProfiles() (HubSpot or Salesforce) calls ProfileRepository: :update0rCreateProfile(...) and a new Crm\Profile row isinsented, Prottleuoserver.pnp:te-to tlres Protttecreated.EventServiceProvider.ono: 139-142 suoscribes two llsteners:• Listeners\ crm|SyncProtledpportunitles (SyncProt1le0pportunities.ono:42-103) - apolies to HubSoot. Salestorce, Bulllhorn. CooperPipedrive, Zoho. For each new profile it:1. Dispatches SyncProfileMetadata (see below).2. Ensures a Deal Insiahts lavout exists(createDeaUInsiahtsLavoutt DoesNotExist. lines 105-146) Via CrmOwnerResolver + buildLavout3. Computes since = configurationSettingsService->getSyncPeriod($crmConfiguration).4. Dispatches SyncOpportunitiesJob with strategy LAST_MODIFIED_BY_PROFTLE_SYNCOPPORTUNITY_STRATEGY, either as a single job or, when requress urdingwindowsearch is true salestorce large tenants, chopped into rolling s/-day windows via limererzoditeracor• Listeners\Crm\SyncProfileLeads (Syncprof1 LeLeads•php:32-79) - Zoho-only; dispatches SyncLeads • Hubspot/salestorce do not run aper-prome ledd sync nere,• SyncProfileMetadata (Syncprot1 LeMetadata•php:39-113) - runs per profile/user: crmService->syncProfileFields( ; and for providersimplementing SyncCrmProfileRecordTypesInterface (Salesforce) it also calls syncProfileRecordTypes() .End-to-end flow summary• HubSpot•Team creation → no CRM sync.•Owner connects Hubspot OAuth (SocialAccountConnected → no automatic data import (Hubspot'S onActivityProviderIntegrated is ano-op; BootstrapIntegrationApp only fires for Integration.app providers). Initial metadata is typically triggered via CrmAccountReconnected → ImoortMetadata → crm:svnc-team-metadata which in turn runs syncOrganization → importStages → importBusinessProcesses • imdortRecordTypes syncProfiles → syncFields• syncProfileso) creates Profile rows → ProfileCreated → SvncProfileOoportunities creates Deal Insiahts lavout + dispatches SyncOpportunitiesJob with the profile-modified strategy) + SyncProfileMetadata (syncs that user's profile fields).• Salesforce•Team creation → onlv the optional salestorce Account stamo in UodateSalesforceAccount it a linked account existsSame reconnect-driven metadata path: SyncTeamMetadata → sync0rganization/importStages/importBusinessProcesses/importRecordTypes/syncProfiles/svncFields Salesforce implementationsin Service.ono.•syncProfiles() SOQL-matches team members, creating Profile rows with edition + crm_ profile id ProfileCreated → SyncProfiluses TimePeriodIterator sliding window to avoid SOOL limits) + SyncProfileMetadata which also runs syncProfileRecordTypes() because Salesforce implements SyncCrmProfileRecordTypesInterface.Notahle ohcorvationeHubSnot and Salesforce do not have a direct CocialAccountConnected @ initial-svne wire› the metadata imnort runs via the reconnedievent/listener (CrmAccountReconnected → ImportMetadata ). Onlv the Integration.app family has a first-connect bootstrap ( BootstrapIntegrationApp → TeamInitialSyncJob ).• The per-orofile opportunity backfill is entirely driven by Profi leCreated, so new deallopportunity ingestion starts only after syncProfilesonas resolved Ckm owners/users to Jiminny users.The opportunity.sync.uses.strateoy LAST MODTETED BY PROFTIE SYNG OPPORTINTTY STRATEGY andrespects team-levelLaetSvncPeriod andlreauiresStidingWindowSearch settingswhat obiects are sunced on team creation and orofile creation•0 (+]W Windsurf Teams 465:53io 4 spaces...
|
58657
|
|
77014
|
1936
|
39
|
2026-04-24T08:50:21.095332+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-24/1777 /Users/lukas/.screenpipe/data/data/2026-04-24/1777020621095_m2.jpg...
|
PhpStorm
|
faVsco.js – CreateNudgeCreatedEvent.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Listeners\Nudges\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\Nudges\NudgeCreated;
use Jiminny\Listeners\Activities\UserPilotActivityListener;
use Jiminny\Models\Nudge;
class CreateNudgeCreatedEvent extends UserPilotActivityListener
{
/**
* Handle the event.
*/
public function handle(NudgeCreated $event): void
{
// Don't attempt to run this on environments with UserPilot not configured.
if (config('services.userpilot.token') === null) {
return;
}
try {
/** @var Nudge $nudge */
$nudge = Nudge::idOrUuId($event->nudgeId);
$this->userPilotService->track(
$nudge->getActivitySearch()->getUser(),
'nudge-created',
);
} catch (GuzzleException $e) {
// Retry later.
$this->release(3600);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Listeners\Activities\Coaching\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\Activities\Crm\ActivityLogged;
use Jiminny\Listeners\Activities\UserPilotActivityListener;
class CreateActivityLoggedEvent extends UserPilotActivityListener
{
/**
* Handle the event.
*/
public function handle(ActivityLogged $event): void
{
// Don't attempt to run this on environments with UserPilot not configured.
if (config('services.userpilot.token') === null) {
return;
}
try {
$this->userPilotService->track(
$event->activity->user,
'logged-activity',
$this->generatePayload($event->activity)
);
} catch (GuzzleException $e) {
// Retry later.
$this->release(3600);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder
Commands, folder
Activities, folder
Analytics, folder
Calendars, folder
Crm, folder
Hubspot, folder
IntegrationApp, folder
Traits, folder
AddLayoutEntities.php, class
AutologDelayedCommand.php, class
BullhornCommandAbstract.php, abstract class
BullhornPingCommand.php, class
BullhornSearchCommand.php, class
BullhornSessionCommand.php, class
CheckActivityLoggableCommand.php, final class
CleanDuplicateFieldDataCommand.php, class
FullSyncOpportunityCommand.php, class
LogActivitiesCommand.php, final class
ManageSyncStrategyCommand.php, class
MatchCrmObjectsCommand.php, class
MatchOpportunityActivitiesCommand.php, class
MigrateProvider.php, class...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.025930852,"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-20738-debug-AJ-tracking-UP, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.08510638,"height":0.025538707},"help_text":"Git Branch: JY-20738-debug-AJ-tracking-UP","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.8400931,"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":"ReportControllerTest","depth":6,"bounds":{"left":0.85538566,"top":0.019952115,"width":0.06017287,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'ReportControllerTest'","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 'ReportControllerTest'","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":"2","depth":4,"bounds":{"left":0.4119016,"top":0.15003991,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.42154256,"top":0.14844373,"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.42885637,"top":0.14844373,"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\nnamespace Jiminny\\Listeners\\Nudges\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\Nudges\\NudgeCreated;\nuse Jiminny\\Listeners\\Activities\\UserPilotActivityListener;\nuse Jiminny\\Models\\Nudge;\n\nclass CreateNudgeCreatedEvent extends UserPilotActivityListener\n{\n /**\n * Handle the event.\n */\n public function handle(NudgeCreated $event): void\n {\n // Don't attempt to run this on environments with UserPilot not configured.\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n try {\n /** @var Nudge $nudge */\n $nudge = Nudge::idOrUuId($event->nudgeId);\n\n $this->userPilotService->track(\n $nudge->getActivitySearch()->getUser(),\n 'nudge-created',\n );\n } catch (GuzzleException $e) {\n // Retry later.\n $this->release(3600);\n }\n }\n}","depth":4,"bounds":{"left":0.14594415,"top":0.14684756,"width":0.28989363,"height":0.8324022},"value":"<?php\n\nnamespace Jiminny\\Listeners\\Nudges\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\Nudges\\NudgeCreated;\nuse Jiminny\\Listeners\\Activities\\UserPilotActivityListener;\nuse Jiminny\\Models\\Nudge;\n\nclass CreateNudgeCreatedEvent extends UserPilotActivityListener\n{\n /**\n * Handle the event.\n */\n public function handle(NudgeCreated $event): void\n {\n // Don't attempt to run this on environments with UserPilot not configured.\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n try {\n /** @var Nudge $nudge */\n $nudge = Nudge::idOrUuId($event->nudgeId);\n\n $this->userPilotService->track(\n $nudge->getActivitySearch()->getUser(),\n 'nudge-created',\n );\n } catch (GuzzleException $e) {\n // Retry later.\n $this->release(3600);\n }\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":"2","depth":4,"bounds":{"left":0.7443484,"top":0.10055866,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.75398934,"top":0.09896249,"width":0.00731383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.7613032,"top":0.09896249,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\nnamespace Jiminny\\Listeners\\Activities\\Coaching\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\Activities\\Crm\\ActivityLogged;\nuse Jiminny\\Listeners\\Activities\\UserPilotActivityListener;\n\nclass CreateActivityLoggedEvent extends UserPilotActivityListener\n{\n /**\n * Handle the event.\n */\n public function handle(ActivityLogged $event): void\n {\n // Don't attempt to run this on environments with UserPilot not configured.\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n try {\n $this->userPilotService->track(\n $event->activity->user,\n 'logged-activity',\n $this->generatePayload($event->activity)\n );\n } catch (GuzzleException $e) {\n // Retry later.\n $this->release(3600);\n }\n }\n}","depth":4,"bounds":{"left":0.45511967,"top":0.09736632,"width":0.3131649,"height":0.8818835},"value":"<?php\n\nnamespace Jiminny\\Listeners\\Activities\\Coaching\\UserPilot;\n\nuse GuzzleHttp\\Exception\\GuzzleException;\nuse Jiminny\\Events\\Activities\\Crm\\ActivityLogged;\nuse Jiminny\\Listeners\\Activities\\UserPilotActivityListener;\n\nclass CreateActivityLoggedEvent extends UserPilotActivityListener\n{\n /**\n * Handle the event.\n */\n public function handle(ActivityLogged $event): void\n {\n // Don't attempt to run this on environments with UserPilot not configured.\n if (config('services.userpilot.token') === null) {\n return;\n }\n\n try {\n $this->userPilotService->track(\n $event->activity->user,\n 'logged-activity',\n $this->generatePayload($event->activity)\n );\n } catch (GuzzleException $e) {\n // Retry later.\n $this->release(3600);\n }\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.011968086,"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},{"role":"AXStaticText","text":"app ~/jiminny/app, folder","depth":6,"role_description":"text"},{"role":"AXStaticText","text":".circleci, folder","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".cursor, folder","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".github","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".sonarlint, folder","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".vscode, folder","depth":7,"role_description":"text"},{"role":"AXStaticText","text":".windsurf, folder","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"app, sources root","depth":7,"role_description":"text"},{"role":"AXStaticText","text":"Actions, folder","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Component, folder","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Acl, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ActionItems, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Activity, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ActivityAnalytics, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ActivitySearch, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"AiActivityType, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"AiAutomation, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"AiCallScoring, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"AskAnything, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Dtos, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Events, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"AskAnythingPromptService.php, class","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"HistoryService.php, class","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"AskJiminnyAi, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"AWS, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"BillingManagement, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Cache, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"CoachingFeedback, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Country, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"CustomerApi, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Database, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Datadog, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"DateTime, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"DealInsights, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"DealRisks, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ElasticSearch, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Eloquent, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Encoding, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Encryption, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ES, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Faker, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"FeatureFlags, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"FFMpeg, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"FileSystem, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Gecko, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Gong, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"GuzzleHttp, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"KeyPoints, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Kiosk, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"LanguageDetection, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"LiveFeed, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Locks, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Math, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"MediaPipeline, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"MeetingBot, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"MobileSettings, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Model, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Notification, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Nudge, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ParagraphBreaker, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ParticipantSpeech, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"PartitionedCookie, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"PlaybackPage, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Playlist, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Prophet, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ProphetAi, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"ProsperWorks, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Queue, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Router, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Saml2, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"SCIM, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Seeder, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Sentry, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Serializer, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Settings, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Sidekick, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Slack, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"TeamInsights, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"TimeMemoryMapper, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Transcription, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"TranscriptionSummary, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Twilio, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Uploader, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"UrlGenerator, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Utility, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Uuid, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Waveform, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Webhooks, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Workflow, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Configuration, folder","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Console, folder","depth":8,"role_description":"text"},{"role":"AXStaticText","text":"Commands, folder","depth":9,"role_description":"text"},{"role":"AXStaticText","text":"Activities, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Analytics, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Calendars, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Crm, folder","depth":10,"role_description":"text"},{"role":"AXStaticText","text":"Hubspot, folder","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"IntegrationApp, folder","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"Traits, folder","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"AddLayoutEntities.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"AutologDelayedCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornCommandAbstract.php, abstract class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornPingCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornSearchCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"BullhornSessionCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"CheckActivityLoggableCommand.php, final class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"CleanDuplicateFieldDataCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"FullSyncOpportunityCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"LogActivitiesCommand.php, final class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"ManageSyncStrategyCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MatchCrmObjectsCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MatchOpportunityActivitiesCommand.php, class","depth":11,"role_description":"text"},{"role":"AXStaticText","text":"MigrateProvider.php, class","depth":11,"role_description":"text"}]...
|
9099539480803223221
|
-6705838826514714172
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
JY-20738-debug-AJ-trackin Project: faVsco.js, menu
JY-20738-debug-AJ-tracking-UP, menu
Start Listening for PHP Debug Connections
ReportControllerTest
Run 'ReportControllerTest'
Debug 'ReportControllerTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Listeners\Nudges\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\Nudges\NudgeCreated;
use Jiminny\Listeners\Activities\UserPilotActivityListener;
use Jiminny\Models\Nudge;
class CreateNudgeCreatedEvent extends UserPilotActivityListener
{
/**
* Handle the event.
*/
public function handle(NudgeCreated $event): void
{
// Don't attempt to run this on environments with UserPilot not configured.
if (config('services.userpilot.token') === null) {
return;
}
try {
/** @var Nudge $nudge */
$nudge = Nudge::idOrUuId($event->nudgeId);
$this->userPilotService->track(
$nudge->getActivitySearch()->getUser(),
'nudge-created',
);
} catch (GuzzleException $e) {
// Retry later.
$this->release(3600);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
2
Previous Highlighted Error
Next Highlighted Error
<?php
namespace Jiminny\Listeners\Activities\Coaching\UserPilot;
use GuzzleHttp\Exception\GuzzleException;
use Jiminny\Events\Activities\Crm\ActivityLogged;
use Jiminny\Listeners\Activities\UserPilotActivityListener;
class CreateActivityLoggedEvent extends UserPilotActivityListener
{
/**
* Handle the event.
*/
public function handle(ActivityLogged $event): void
{
// Don't attempt to run this on environments with UserPilot not configured.
if (config('services.userpilot.token') === null) {
return;
}
try {
$this->userPilotService->track(
$event->activity->user,
'logged-activity',
$this->generatePayload($event->activity)
);
} catch (GuzzleException $e) {
// Retry later.
$this->release(3600);
}
}
}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide
app ~/jiminny/app, folder
.circleci, folder
.cursor, folder
.github
.sonarlint, folder
.vscode, folder
.windsurf, folder
app, sources root
Actions, folder
Component, folder
Acl, folder
ActionItems, folder
Activity, folder
ActivityAnalytics, folder
ActivitySearch, folder
AiActivityType, folder
AiAutomation, folder
AiCallScoring, folder
AskAnything, folder
Dtos, folder
Events, folder
AskAnythingPromptService.php, class
HistoryService.php, class
AskJiminnyAi, folder
AWS, folder
BillingManagement, folder
Cache, folder
CoachingFeedback, folder
Country, folder
CustomerApi, folder
Database, folder
Datadog, folder
DateTime, folder
DealInsights, folder
DealRisks, folder
ElasticSearch, folder
Eloquent, folder
Encoding, folder
Encryption, folder
ES, folder
Faker, folder
FeatureFlags, folder
FFMpeg, folder
FileSystem, folder
Gecko, folder
Gong, folder
GuzzleHttp, folder
KeyPoints, folder
Kiosk, folder
LanguageDetection, folder
LiveFeed, folder
Locks, folder
Math, folder
MediaPipeline, folder
MeetingBot, folder
MobileSettings, folder
Model, folder
Notification, folder
Nudge, folder
ParagraphBreaker, folder
ParticipantSpeech, folder
PartitionedCookie, folder
PlaybackPage, folder
Playlist, folder
Prophet, folder
ProphetAi, folder
ProsperWorks, folder
Queue, folder
Router, folder
Saml2, folder
SCIM, folder
Seeder, folder
Sentry, folder
Serializer, folder
Settings, folder
Sidekick, folder
Slack, folder
TeamInsights, folder
TimeMemoryMapper, folder
Transcription, folder
TranscriptionSummary, folder
Twilio, folder
Uploader, folder
UrlGenerator, folder
Utility, folder
Uuid, folder
Waveform, folder
Webhooks, folder
Workflow, folder
Configuration, folder
Console, folder
Commands, folder
Activities, folder
Analytics, folder
Calendars, folder
Crm, folder
Hubspot, folder
IntegrationApp, folder
Traits, folder
AddLayoutEntities.php, class
AutologDelayedCommand.php, class
BullhornCommandAbstract.php, abstract class
BullhornPingCommand.php, class
BullhornSearchCommand.php, class
BullhornSessionCommand.php, class
CheckActivityLoggableCommand.php, final class
CleanDuplicateFieldDataCommand.php, class
FullSyncOpportunityCommand.php, class
LogActivitiesCommand.php, final class
ManageSyncStrategyCommand.php, class
MatchCrmObjectsCommand.php, class
MatchOpportunityActivitiesCommand.php, class
MigrateProvider.php, class...
|
77012
|
|
75113
|
1870
|
31
|
2026-04-23T10:37:09.226199+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-23/1776 /Users/lukas/.screenpipe/data/data/2026-04-23/1776940629226_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivityMoreSlackcalVIewmistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewmistonWindowhelp@ Describe what you are looking forJiminny... vi random# releases# sona-ofnce# support# thank-vous# the people of jimi..6- Direct messages3 Aneliya Angelova, ...Vasil Vasilev• Adelina Petrova CStoyan TomovNikolav Yankov.3 Dotko Kachinckif Aneliva Angelova. Nikolay NikolovMario Georgievey lodor StamatovGabriela Dureva© Galva Dimitrova* Stefka StoyanovaStovan Taney::: Apps8 Toast-T lira Cloud(m) Google Cale.* Aneliya Angelova, ...MessagesAdd canvar FilesTukas Kovallk 10-12 AMда, ами добреToday ~ на на старитеAneliya Angelova 10:14 AMокитаитьла на репорта и Data source секцияташе показват поавилния периол нали -понеже това се разминаваше лпо сега.Lukas Kovalik 10:47 AMсега забелязах че стария count които сеползва в пои контрол на лостьпіcanAccessAiRenort боои само ресултатикойто са пратени, не тези които сагeнериоаниNikolav Yankov 1:31 PMкакво значи които са пратени?по приниип условието беше - ако за user-aима генерирано и може ла го глела на атrevorts стоаниuaтаLukas Kovalik 1:35 PMла, говоря за нешо още от прели, count.който се глела дали има user прaво ла глелаal-revorts стоаница, орои пратени не тезикойто са генериоани само. Реално ако сепраща всичко на ред почти няма да севижла пазлика editedMessage Aneliva Angelova, Nikolay Yankov. Steli….+ Aa €New TalAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X11 OpenClv 20541 eytract common traits #12009Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits L@ Filter files...• • appv Component/Activity/ServicesE GetDefaultActivitvTvpeServic……• = Listeners/Crm |*) RemoteCrmRecordDeletedList..• F Models₴ Activity.php|E PlaybookCategorv.phpv E Services/Crmv # CloseE Service.phpv F Heloersi• ActivityPlaybookTrait.php+ CrmHelperRepositorv.ohpv — Listeners=) ConvertLeadActivities.phpv # Salesforcev& FieldsFieldHelper.php& ServiceTraits+ FollowupActivityTrait.phpE Service.php# BaseService.ohp• — tectc/l Init|• = Component/Activitv/ServicesÆ GetDefaultActivitvTvpeService~ E Services/Crm |^ HelpersI# ActivitvPlavbookTraitTest.nhnv # IntegrationApp@ ServiceTest.ohov A listeners*) ConvertLeadActivitiesTest.phpapp/Services/Crm/Listeners/ConvertLeadActivities.phplv0a -5,29 +5,54 Cdnamespace Jiminny servicestcrmiListeners.use attuminatercontracts \yueue shou taqueue,use Jiminny\cvents\activiczes\crm\Leadconverted;use Jiminny Models\Activity;use Jiminny\Models\Crm\Configuration;use Jiminny ModelsLead:12 - use Jiminny\Models\Team;use Jiminny\Repositories\Crm\LeadRepository;14 - use Jiminny\Repositories\Crm\OpportunityRepository;use Jiminnv\Services\Crm\CrmConfigurationSettingsService:use Psr\Log\LoggerInterface;* Convert all scheduled future activities. which are associated with a lead. which has been converted.21 - readonly class ConvertLeadActivities imolements ShouldOueuepublic function _constructprivate OpportunityRepository SopportunityRepository,private LeadRevository SleadRevositorv.lprivate CrmConfigurationSettingsService SsettingsService,private LoagerInterface Sloager.R< >0 • ] Support Daily - in 1h 23m100% (78 Thu 23 Apr 13:37:09Retresh O 19/ 20 viewed• Checks pendinaubmit review - ộ+64-30 0uu8• Viewednamespace Jiminny ervicestcrm\Listeners,use 1ttumnatercontracts \queue \shou taqueue?+ use Illuminate\Queue \InteractsWithQueue;+ use Illuminate\Support\Collection;10 + use Jiminny Comoonent Queue Constants:use Jiminny\Events\Activities\Crm\LeadConverted;use Jiminny Models Activity:use Jiminny modelsycrmycontiguracion;use Jiminny ModelsLead:use Jiminny Revositories Crm-LeadRepository:use Jiminny Services Crm\CrmConfiaurationSettinasService:use Psr\Log\LoggerInterface;* Convert all scheduled future activities, which are associated with a lead, which has been converted.22 + class ConvertLeadActivities imolements ShouldOueue+ use InteractsWithQueue;25 +oublic function construct(private readonly LeadRepository $leadRepository,28 private readonly Crmconfzguratzongettangsservice ssettangsservsce,private readonly LoggerInterface $logger,30* Delay the execution of ConvertLeadActivities listener by 5 seconds,* When we run SaveActivitv for auto/manually loaged events. we svnc leads..* and if any of them are converted, we trigger a ConvertedLead event from the sync function once.37 +* then a second time we immediately handle the current activitv as one with converted lead —reassigning38 +* accounts. oovortunities. contacts. etc.* The same thing will happen within this listener. Since both actions run in parallel.* one will overwrite the other, with a risk to corrupt activity data.* This delay will ensure the converted activity is handled separately, while the listnere is...
|
NULL
|
9099465538625270986
|
NULL
|
visual_change
|
ocr
|
NULL
|
HomeActivityMoreSlackcalVIewmistonWindowhelp@ Desc HomeActivityMoreSlackcalVIewmistonWindowhelp@ Describe what you are looking forJiminny... vi random# releases# sona-ofnce# support# thank-vous# the people of jimi..6- Direct messages3 Aneliya Angelova, ...Vasil Vasilev• Adelina Petrova CStoyan TomovNikolav Yankov.3 Dotko Kachinckif Aneliva Angelova. Nikolay NikolovMario Georgievey lodor StamatovGabriela Dureva© Galva Dimitrova* Stefka StoyanovaStovan Taney::: Apps8 Toast-T lira Cloud(m) Google Cale.* Aneliya Angelova, ...MessagesAdd canvar FilesTukas Kovallk 10-12 AMда, ами добреToday ~ на на старитеAneliya Angelova 10:14 AMокитаитьла на репорта и Data source секцияташе показват поавилния периол нали -понеже това се разминаваше лпо сега.Lukas Kovalik 10:47 AMсега забелязах че стария count които сеползва в пои контрол на лостьпіcanAccessAiRenort боои само ресултатикойто са пратени, не тези които сагeнериоаниNikolav Yankov 1:31 PMкакво значи които са пратени?по приниип условието беше - ако за user-aима генерирано и може ла го глела на атrevorts стоаниuaтаLukas Kovalik 1:35 PMла, говоря за нешо още от прели, count.който се глела дали има user прaво ла глелаal-revorts стоаница, орои пратени не тезикойто са генериоани само. Реално ако сепраща всичко на ред почти няма да севижла пазлика editedMessage Aneliva Angelova, Nikolay Yankov. Steli….+ Aa €New TalAl reports promotion pages by nik• Jy-9712 | Nuges to expire after on8 Jiminnyu Userpilot | Saved Reports8 JiminnyJy 20541 extract common trait X11 OpenClv 20541 eytract common traits #12009Vasil-Jiminny wants to merge 40 commits into master from JY-20541-extract-common-traits L@ Filter files...• • appv Component/Activity/ServicesE GetDefaultActivitvTvpeServic……• = Listeners/Crm |*) RemoteCrmRecordDeletedList..• F Models₴ Activity.php|E PlaybookCategorv.phpv E Services/Crmv # CloseE Service.phpv F Heloersi• ActivityPlaybookTrait.php+ CrmHelperRepositorv.ohpv — Listeners=) ConvertLeadActivities.phpv # Salesforcev& FieldsFieldHelper.php& ServiceTraits+ FollowupActivityTrait.phpE Service.php# BaseService.ohp• — tectc/l Init|• = Component/Activitv/ServicesÆ GetDefaultActivitvTvpeService~ E Services/Crm |^ HelpersI# ActivitvPlavbookTraitTest.nhnv # IntegrationApp@ ServiceTest.ohov A listeners*) ConvertLeadActivitiesTest.phpapp/Services/Crm/Listeners/ConvertLeadActivities.phplv0a -5,29 +5,54 Cdnamespace Jiminny servicestcrmiListeners.use attuminatercontracts \yueue shou taqueue,use Jiminny\cvents\activiczes\crm\Leadconverted;use Jiminny Models\Activity;use Jiminny\Models\Crm\Configuration;use Jiminny ModelsLead:12 - use Jiminny\Models\Team;use Jiminny\Repositories\Crm\LeadRepository;14 - use Jiminny\Repositories\Crm\OpportunityRepository;use Jiminnv\Services\Crm\CrmConfigurationSettingsService:use Psr\Log\LoggerInterface;* Convert all scheduled future activities. which are associated with a lead. which has been converted.21 - readonly class ConvertLeadActivities imolements ShouldOueuepublic function _constructprivate OpportunityRepository SopportunityRepository,private LeadRevository SleadRevositorv.lprivate CrmConfigurationSettingsService SsettingsService,private LoagerInterface Sloager.R< >0 • ] Support Daily - in 1h 23m100% (78 Thu 23 Apr 13:37:09Retresh O 19/ 20 viewed• Checks pendinaubmit review - ộ+64-30 0uu8• Viewednamespace Jiminny ervicestcrm\Listeners,use 1ttumnatercontracts \queue \shou taqueue?+ use Illuminate\Queue \InteractsWithQueue;+ use Illuminate\Support\Collection;10 + use Jiminny Comoonent Queue Constants:use Jiminny\Events\Activities\Crm\LeadConverted;use Jiminny Models Activity:use Jiminny modelsycrmycontiguracion;use Jiminny ModelsLead:use Jiminny Revositories Crm-LeadRepository:use Jiminny Services Crm\CrmConfiaurationSettinasService:use Psr\Log\LoggerInterface;* Convert all scheduled future activities, which are associated with a lead, which has been converted.22 + class ConvertLeadActivities imolements ShouldOueue+ use InteractsWithQueue;25 +oublic function construct(private readonly LeadRepository $leadRepository,28 private readonly Crmconfzguratzongettangsservice ssettangsservsce,private readonly LoggerInterface $logger,30* Delay the execution of ConvertLeadActivities listener by 5 seconds,* When we run SaveActivitv for auto/manually loaged events. we svnc leads..* and if any of them are converted, we trigger a ConvertedLead event from the sync function once.37 +* then a second time we immediately handle the current activitv as one with converted lead —reassigning38 +* accounts. oovortunities. contacts. etc.* The same thing will happen within this listener. Since both actions run in parallel.* one will overwrite the other, with a risk to corrupt activity data.* This delay will ensure the converted activity is handled separately, while the listnere is...
|
NULL
|
|
54030
|
1166
|
25
|
2026-04-20T08:37:21.688721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776674241688_m1.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ai-reports/manage
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Ask Jiminny Test Report
Daily
Kamren Schulist
30/04/2026
Expiring in 10 days
Eastern Summary
Weekly
14/04/2026
Expired
Health
Weekly
Kamren Schulist
Florian Hartmann
30/04/2026
Expiring in 10 days
To Be Expired Report
Weekly
17/04/2027
Tuesday Report
Daily
30/04/2026
Expiring in 10 days
Create report
Save
1. General
1. General
NAME
Test report Expire
Clear
*
FREQUENCY
Select Daily
Select
Daily
*
EXPIRES ON
20 Apr, 2027
*
Share with
TEAM
Select Select
Select
Select
TEAM MEMBER
Select Select
Select
Select
2. Report parameters
2. Report parameters
SAVED SEARCH
Select Select
Select
Select
*
ASK JIMINNY PROMPT
Select Select
Select
Select
*
Open Intercom Messenger...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0038194444,"top":0.072222225,"width":0.15868056,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.13222222,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.14777778,"width":0.32951388,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.0,"top":0.17777778,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"bounds":{"left":0.027777778,"top":0.19333333,"width":0.19895834,"height":0.015},"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,"bounds":{"left":0.0,"top":0.22333333,"width":0.16631944,"height":0.045555554},"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,"bounds":{"left":0.027777778,"top":0.23888889,"width":0.41701388,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"JY-20692 change confirmation parameter by LakyLak · Pull Request #11986 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2688889,"width":0.16631944,"height":0.045555554},"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,"bounds":{"left":0.027777778,"top":0.28444445,"width":0.32430556,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20543] AJ Reports > Tracking - Jira","depth":4,"bounds":{"left":0.0,"top":0.31444445,"width":0.16631944,"height":0.045555554},"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,"bounds":{"left":0.027777778,"top":0.33,"width":0.14583333,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":4,"bounds":{"left":0.0,"top":0.36,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"bounds":{"left":0.027777778,"top":0.37555555,"width":0.22326389,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.40555555,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.4211111,"width":0.26979166,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.4511111,"width":0.16631944,"height":0.045555554},"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.027777778,"top":0.46666667,"width":0.03125,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.49666667,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.027777778,"top":0.51222223,"width":0.12951389,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"bounds":{"left":0.0,"top":0.5422222,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"bounds":{"left":0.027777778,"top":0.55777776,"width":0.096875,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.5877778,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.60333335,"width":0.42881945,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.6333333,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.6488889,"width":0.08194444,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0,"top":0.6788889,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"bounds":{"left":0.027777778,"top":0.6944444,"width":0.08923611,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.72444445,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.027777778,"top":0.74,"width":0.42881945,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.77,"width":0.16631944,"height":0.045555554},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.027777778,"top":0.78555554,"width":0.027430555,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.8155556,"width":0.16631944,"height":0.045555554},"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.027777778,"top":0.83111113,"width":0.027430555,"height":0.015},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.140625,"top":0.82555556,"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":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.86333334,"width":0.15486111,"height":0.035555556},"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.005902778,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.028819444,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.052083332,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.07534722,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.09861111,"top":0.9583333,"width":0.022222223,"height":0.035555556},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-18909-automated-reports-ask-jiminny ■ 873114","depth":9,"bounds":{"left":0.16770834,"top":0.98055553,"width":0.21006945,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"75","depth":12,"bounds":{"left":0.171875,"top":0.88,"width":0.033333335,"height":0.04888889},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"75","depth":14,"bounds":{"left":0.1892361,"top":0.885,"width":0.009722223,"height":0.016666668},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ask Jiminny Reports","depth":14,"bounds":{"left":0.22743055,"top":0.096666664,"width":0.12534723,"height":0.027222222},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Reports","depth":15,"bounds":{"left":0.22743055,"top":0.096666664,"width":0.12534723,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":13,"bounds":{"left":0.93472224,"top":0.09,"width":0.048611112,"height":0.04},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Report name","depth":16,"bounds":{"left":0.2534722,"top":0.15222222,"width":0.12118056,"height":0.027777778},"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Prompt Prompt","depth":13,"bounds":{"left":0.41631943,"top":0.15222222,"width":0.15277778,"height":0.027777778},"value":"Prompt Prompt","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Prompt","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Prompt","depth":15,"bounds":{"left":0.41631943,"top":0.15722223,"width":0.030555556,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Saved search Saved search","depth":13,"bounds":{"left":0.5857639,"top":0.15222222,"width":0.15277778,"height":0.027777778},"value":"Saved search Saved search","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved search","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved search","depth":15,"bounds":{"left":0.5857639,"top":0.15722223,"width":0.052430555,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"All statuses All statuses","depth":13,"bounds":{"left":0.7552083,"top":0.15222222,"width":0.125,"height":0.027777778},"value":"All statuses All statuses","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"All statuses","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All statuses","depth":15,"bounds":{"left":0.7552083,"top":0.15722223,"width":0.046527777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":13,"bounds":{"left":0.88784724,"top":0.15666667,"width":0.050694443,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"bounds":{"left":0.22673611,"top":0.23222223,"width":0.027083334,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"bounds":{"left":0.48298612,"top":0.23222223,"width":0.05451389,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"bounds":{"left":0.6111111,"top":0.23222223,"width":0.036458332,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EXPIRING","depth":16,"bounds":{"left":0.73888886,"top":0.23222223,"width":0.042708334,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"bounds":{"left":0.8670139,"top":0.23222223,"width":0.039930556,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Test Report","depth":17,"bounds":{"left":0.22673611,"top":0.29055557,"width":0.09791667,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.48298612,"top":0.29055557,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.62604165,"top":0.28111112,"width":0.034375,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"bounds":{"left":0.73888886,"top":0.28,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"bounds":{"left":0.7534722,"top":0.3011111,"width":0.07638889,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Eastern Summary","depth":17,"bounds":{"left":0.22673611,"top":0.34777778,"width":0.072222225,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"bounds":{"left":0.48298612,"top":0.34777778,"width":0.03125,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"bounds":{"left":0.73888886,"top":0.33722222,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expired","depth":18,"bounds":{"left":0.7534722,"top":0.35833332,"width":0.031597223,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Health","depth":17,"bounds":{"left":0.22673611,"top":0.405,"width":0.027777778,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"bounds":{"left":0.48298612,"top":0.405,"width":0.03125,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"bounds":{"left":0.62604165,"top":0.395,"width":0.034375,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Florian Hartmann","depth":18,"bounds":{"left":0.64166665,"top":0.395,"width":0.044444446,"height":0.04},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"bounds":{"left":0.73888886,"top":0.3938889,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"bounds":{"left":0.7534722,"top":0.41555557,"width":0.07638889,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To Be Expired Report","depth":17,"bounds":{"left":0.22673611,"top":0.46,"width":0.08611111,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"bounds":{"left":0.48298612,"top":0.46,"width":0.03125,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17/04/2027","depth":17,"bounds":{"left":0.73888886,"top":0.46,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tuesday Report","depth":17,"bounds":{"left":0.22673611,"top":0.51555556,"width":0.06388889,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"bounds":{"left":0.48298612,"top":0.51555556,"width":0.021180555,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"bounds":{"left":0.73888886,"top":0.5044444,"width":0.050347224,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"bounds":{"left":0.7534722,"top":0.5261111,"width":0.07638889,"height":0.018333333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create report","depth":14,"bounds":{"left":0.5833333,"top":0.096666664,"width":0.08472222,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save","depth":13,"bounds":{"left":0.91770834,"top":0.09,"width":0.03923611,"height":0.04},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. General","depth":12,"bounds":{"left":0.5833333,"top":0.17555556,"width":0.40555555,"height":0.045555554},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. General","depth":13,"bounds":{"left":0.5833333,"top":0.18444444,"width":0.05138889,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NAME","depth":14,"bounds":{"left":0.5923611,"top":0.2338889,"width":0.020833334,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Test report Expire","depth":13,"bounds":{"left":0.5923611,"top":0.24777777,"width":0.37083334,"height":0.027777778},"value":"Test report Expire","help_text":"","placeholder":"Enter name","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear","depth":13,"bounds":{"left":0.96319443,"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":"AXStaticText","text":"*","depth":13,"bounds":{"left":0.97847223,"top":0.22611111,"width":0.0055555557,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":14,"bounds":{"left":0.5923611,"top":0.31055555,"width":0.04236111,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Daily","depth":12,"bounds":{"left":0.5923611,"top":0.32444444,"width":0.18958333,"height":0.027777778},"value":"Select Daily","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Daily","depth":14,"bounds":{"left":0.5923611,"top":0.32944444,"width":0.021180555,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"bounds":{"left":0.7722222,"top":0.30277777,"width":0.0055555557,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EXPIRES ON","depth":16,"bounds":{"left":0.7986111,"top":0.31055555,"width":0.04027778,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Apr, 2027","depth":16,"bounds":{"left":0.7986111,"top":0.33222222,"width":0.052083332,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":15,"bounds":{"left":0.97847223,"top":0.30277777,"width":0.0055555557,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share with","depth":13,"bounds":{"left":0.5833333,"top":0.3772222,"width":0.046180554,"height":0.018888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TEAM","depth":14,"bounds":{"left":0.5923611,"top":0.415,"width":0.019791666,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"bounds":{"left":0.5923611,"top":0.4288889,"width":0.18958333,"height":0.027777778},"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"bounds":{"left":0.5923611,"top":0.43388888,"width":0.024652777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TEAM MEMBER","depth":14,"bounds":{"left":0.7986111,"top":0.415,"width":0.05138889,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"bounds":{"left":0.7986111,"top":0.4288889,"width":0.18958333,"height":0.027777778},"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"bounds":{"left":0.7986111,"top":0.43388888,"width":0.024652777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Report parameters","depth":12,"bounds":{"left":0.5833333,"top":0.48,"width":0.40555555,"height":0.045555554},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Report parameters","depth":13,"bounds":{"left":0.5833333,"top":0.4888889,"width":0.10694444,"height":0.021666666},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAVED SEARCH","depth":14,"bounds":{"left":0.5923611,"top":0.53833336,"width":0.051041666,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"bounds":{"left":0.5923611,"top":0.55222225,"width":0.18958333,"height":0.027777778},"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"bounds":{"left":0.5923611,"top":0.55722225,"width":0.024652777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"bounds":{"left":0.7722222,"top":0.53055555,"width":0.0055555557,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ASK JIMINNY PROMPT","depth":14,"bounds":{"left":0.7986111,"top":0.53833336,"width":0.075,"height":0.013888889},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"bounds":{"left":0.7986111,"top":0.55222225,"width":0.18958333,"height":0.027777778},"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"bounds":{"left":0.7986111,"top":0.55722225,"width":0.024652777,"height":0.017777778},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"bounds":{"left":0.97847223,"top":0.53055555,"width":0.0055555557,"height":0.027222222},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Intercom Messenger","depth":7,"bounds":{"left":0.9527778,"top":0.92444444,"width":0.033333335,"height":0.053333335},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9098743064037159085
|
-3020402418264382746
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Ask Jiminny Test Report
Daily
Kamren Schulist
30/04/2026
Expiring in 10 days
Eastern Summary
Weekly
14/04/2026
Expired
Health
Weekly
Kamren Schulist
Florian Hartmann
30/04/2026
Expiring in 10 days
To Be Expired Report
Weekly
17/04/2027
Tuesday Report
Daily
30/04/2026
Expiring in 10 days
Create report
Save
1. General
1. General
NAME
Test report Expire
Clear
*
FREQUENCY
Select Daily
Select
Daily
*
EXPIRES ON
20 Apr, 2027
*
Share with
TEAM
Select Select
Select
Select
TEAM MEMBER
Select Select
Select
Select
2. Report parameters
2. Report parameters
SAVED SEARCH
Select Select
Select
Select
*
ASK JIMINNY PROMPT
Select Select
Select
Select
*
Open Intercom Messenger...
|
54028
|
|
54031
|
1168
|
22
|
2026-04-20T08:37:21.609727+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776674241609_m2.jpg...
|
Firefox
|
Jiminny — Work
|
1
|
app.staging.jiminny.com/ai-reports/manage
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Ask Jiminny Test Report
Daily
Kamren Schulist
30/04/2026
Expiring in 10 days
Eastern Summary
Weekly
14/04/2026
Expired
Health
Weekly
Kamren Schulist
Florian Hartmann
30/04/2026
Expiring in 10 days
To Be Expired Report
Weekly
17/04/2027
Tuesday Report
Daily
30/04/2026
Expiring in 10 days
Create report
Save
1. General
1. General
NAME
Test report Expire
Clear
*
FREQUENCY
Select Daily
Select
Daily
*
EXPIRES ON
20 Apr, 2027
*
Share with
TEAM
Select Select
Select
Select
TEAM MEMBER
Select Select
Select
Select
2. Report parameters
2. Report parameters
SAVED SEARCH
Select Select
Select
Select
*
ASK JIMINNY PROMPT
Select Select
Select
Select
*
Open Intercom Messenger...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.27210772,"top":1.0,"width":0.07596409,"height":-0.051875472},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.07962101,"height":-0.094972014},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"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":false},{"role":"AXStaticText","text":"[JY-18909] [Part2] Automated reports with Ask Jiminny - Jira","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot | Logged-activity","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot | Logged-activity","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Pipelines - jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Feed — jiminny — Sentry","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","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":"JY-18909-automated-reports-ask-jiminny ■ 873114","depth":9,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"75","depth":12,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"75","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Ask Jiminny Reports","depth":14,"bounds":{"left":0.37915558,"top":1.0,"width":0.06000665,"height":-0.06943333},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Reports","depth":15,"bounds":{"left":0.37915558,"top":1.0,"width":0.06000665,"height":-0.06943333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create","depth":13,"bounds":{"left":0.71775264,"top":1.0,"width":0.023271276,"height":-0.06464481},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXTextField","text":"Report name","depth":16,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXComboBox","text":"Prompt Prompt","depth":13,"value":"Prompt Prompt","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Prompt","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Prompt","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Saved search Saved search","depth":13,"value":"Saved search Saved search","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Saved search","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Saved search","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"All statuses All statuses","depth":13,"value":"All statuses All statuses","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"All statuses","depth":14,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All statuses","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Clear all","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"NAME","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SHARED","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EXPIRING","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ACTIONS","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Ask Jiminny Test Report","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Eastern Summary","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"14/04/2026","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expired","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Health","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Kamren Schulist","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Florian Hartmann","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"To Be Expired Report","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Weekly","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"17/04/2027","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Tuesday Report","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"30/04/2026","depth":17,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Expiring in 10 days","depth":18,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Create report","depth":14,"bounds":{"left":0.54953456,"top":1.0,"width":0.04055851,"height":-0.06943333},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Save","depth":13,"bounds":{"left":0.7096077,"top":1.0,"width":0.018783245,"height":-0.06464481},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"1. General","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"1. General","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"NAME","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXTextField","text":"Test report Expire","depth":13,"value":"Test report Expire","help_text":"","placeholder":"Enter name","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Clear","depth":13,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"*","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"FREQUENCY","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Daily","depth":12,"value":"Select Daily","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Daily","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"EXPIRES ON","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"20 Apr, 2027","depth":16,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":15,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Share with","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TEAM","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"TEAM MEMBER","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"2. Report parameters","depth":12,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"2. Report parameters","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"SAVED SEARCH","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"ASK JIMINNY PROMPT","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXComboBox","text":"Select Select","depth":12,"value":"Select Select","help_text":"","role_description":"combo box","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Select","depth":13,"help_text":"","role_description":"text field","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Select","depth":14,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"*","depth":13,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Open Intercom Messenger","depth":7,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
9098743064037159085
|
-3020402418264382746
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
JY-20553 | Improve crm-sync delays by yalokin-jiminny · Pull Request #11976 · jiminny/app
[SRD-6793] Les Mills activity types not pulling in - Jira
[SRD-6793] Les Mills activity types not pulling in - 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
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
Ask Jiminny Reports by nikolay-yankov · Pull Request #11894 · jiminny/app
New Tab
New Tab
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot | Logged-activity
Userpilot | Logged-activity
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Pipelines - jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Feed — jiminny — Sentry
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
Jiminny
Jiminny
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
JY-18909-automated-reports-ask-jiminny ■ 873114
75
75
Ask Jiminny Reports
Ask Jiminny Reports
Create
Report name
Prompt Prompt
Prompt
Prompt
Saved search Saved search
Saved search
Saved search
All statuses All statuses
All statuses
All statuses
Clear all
NAME
FREQUENCY
SHARED
EXPIRING
ACTIONS
Ask Jiminny Test Report
Daily
Kamren Schulist
30/04/2026
Expiring in 10 days
Eastern Summary
Weekly
14/04/2026
Expired
Health
Weekly
Kamren Schulist
Florian Hartmann
30/04/2026
Expiring in 10 days
To Be Expired Report
Weekly
17/04/2027
Tuesday Report
Daily
30/04/2026
Expiring in 10 days
Create report
Save
1. General
1. General
NAME
Test report Expire
Clear
*
FREQUENCY
Select Daily
Select
Daily
*
EXPIRES ON
20 Apr, 2027
*
Share with
TEAM
Select Select
Select
Select
TEAM MEMBER
Select Select
Select
Select
2. Report parameters
2. Report parameters
SAVED SEARCH
Select Select
Select
Select
*
ASK JIMINNY PROMPT
Select Select
Select
Select
*
Open Intercom Messenger...
|
54029
|
|
24890
|
535
|
63
|
2026-04-15T12:35:54.564696+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-15/1776 /Users/lukas/.screenpipe/data/data/2026-04-15/1776256554564_m1.jpg...
|
Boosteroid
|
Boosteroid
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
BoosteroidS0 ll 0# Sprint Review - in 25 ml• 0-zsh BoosteroidS0 ll 0# Sprint Review - in 25 ml• 0-zshDOCKERO $1DEV (-zsh)182APP (-zsh)83ec2-user@ip-10-.. 884-zsh85-zsh861536336|244781accessibilitylAXStaticTextl1l-zshl0.48819443583488510.033333335071802110.02291666716337210.01777777820825581536335|24478laccessibility|AXStaticText|1|<x110.95486110448837310.032222222536802310.0388888902962208I0.[CREDIT_CARD]-zsh-100% C8 Wed 15 Apr 15:35:54T81€87* Unable to a...O x8-zshzsh: command not found: #31105|2026-04-15T12:22:33.375110+00:00|clipboardl ||||# What's in one day's folderls ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.screenpipe/data -name "*.jpg" -exec du -c {} + 2>/dev/null | tail -1find ~/.screenpipe/data -name "*.mp4" -exec du -c {} + 2>/dev/null | tail -1# Sample filenames to understand naming patternls ~/.screenpipe/data/data/2026-04-15/ | head -20# One more query - sample ocr_text correctlysqlite3 ~/.screenpipe/db.sqliteSELECT o. frame_id, o.app_name, o.window_name, o. focused,substr(o.text, 1, 120) as text_previewFROM ocr_text oORDER BY o. frame_id DESCLIMIT 5;# And frames samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, timestamp, app_name, window_name, snapshot_path,capture_trigger, text_source, content_hashFROM framesORDER BY id DESCLIMIT 5;# And elements samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, frame_id, source, role, depth,substr(text,1,80) as text_preview,left_bound, top_bound, width_bound, height_boun...l31104|2026-04-15T12:22:33.374610+00:00|key|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]11|1131103|2026-04-15T12:22:32.539852+00:00|text|||||clear31102|2026-04-15T12:22:30.783272+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]192014791|AXTextArea| shell31101|2026-04-15T12:22:30.697760+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]19201479111lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
9098584787383982283
|
NULL
|
click
|
ocr
|
NULL
|
BoosteroidS0 ll 0# Sprint Review - in 25 ml• 0-zsh BoosteroidS0 ll 0# Sprint Review - in 25 ml• 0-zshDOCKERO $1DEV (-zsh)182APP (-zsh)83ec2-user@ip-10-.. 884-zsh85-zsh861536336|244781accessibilitylAXStaticTextl1l-zshl0.48819443583488510.033333335071802110.02291666716337210.01777777820825581536335|24478laccessibility|AXStaticText|1|<x110.95486110448837310.032222222536802310.0388888902962208I0.[CREDIT_CARD]-zsh-100% C8 Wed 15 Apr 15:35:54T81€87* Unable to a...O x8-zshzsh: command not found: #31105|2026-04-15T12:22:33.375110+00:00|clipboardl ||||# What's in one day's folderls ~/.screenpipe/data/data/2026-04-15/ | head -40# Total size of jpg vs mp4find ~/.screenpipe/data -name "*.jpg" -exec du -c {} + 2>/dev/null | tail -1find ~/.screenpipe/data -name "*.mp4" -exec du -c {} + 2>/dev/null | tail -1# Sample filenames to understand naming patternls ~/.screenpipe/data/data/2026-04-15/ | head -20# One more query - sample ocr_text correctlysqlite3 ~/.screenpipe/db.sqliteSELECT o. frame_id, o.app_name, o.window_name, o. focused,substr(o.text, 1, 120) as text_previewFROM ocr_text oORDER BY o. frame_id DESCLIMIT 5;# And frames samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, timestamp, app_name, window_name, snapshot_path,capture_trigger, text_source, content_hashFROM framesORDER BY id DESCLIMIT 5;# And elements samplesqlite3 ~/.screenpipe/db.sqlite "SELECT id, frame_id, source, role, depth,substr(text,1,80) as text_preview,left_bound, top_bound, width_bound, height_boun...l31104|2026-04-15T12:22:33.374610+00:00|key|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]11|1131103|2026-04-15T12:22:32.539852+00:00|text|||||clear31102|2026-04-15T12:22:30.783272+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]192014791|AXTextArea| shell31101|2026-04-15T12:22:30.697760+00:00|click|Code|Getting started with Cla... - screenpipe [SSH: [IP_ADDRESS]]19201479111lukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/.screenpipe $...
|
NULL
|
|
59380
|
1278
|
22
|
2026-04-20T13:44:59.813703+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776692699813_m1.jpg...
|
Firefox
|
Firefox
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelplbl→Cmeet.google.com/cxs-eips-npt?authuser=0Galya Dimitrova (Presenting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK52-8•Mon 20 Apr 16:44jiminny.atlassian.net|A Sentry3 HubSpot|8 ОрeпAl#f Seit ServiceAWS USAWS EUAWS AIPlanhat# Platform Te...Dust Docs|S. GTM Tren.7 A Jourmey-The Reven…88Search? For you• Recent|# Starred89 Apps& Plans0, SpacesStarredJiminny (New)ICD Platform TeamIID Processing TeamII SE KanbanIID Capture TeamIID Enterprise Stability I...DiscoveryProductRecent9 Service-Desk= More spaces |= FiltersIB DashboardsOperations& Customers|•] Еmой|E3 FesturesA LogRocketP PostmarkBamboo* Campus x|FirebaseE Ask Jimin.G) Demo Exn+ Create# UpgradeAsk RovoSpaces / Jiminny (New)Platform Team• Jira work item@ Summary|& Timeline• Backlog|IID Active sprints8 Calendar |C ReportsMore 9+> Automation 4 Rule executionsQ Search backlog |00800Version vEpic vType vMore v> featureOS |Open featureOSMiatrorm spnnt s UZ Zy Apr - 15 May (15 work Rems)175 10 0> SentrySl! Linked Issues• JY-20625 Jiminny MCP Connector|BACKLOGCreated 15 April 2026 at 14:09Updated 20 April 2026 at 15:15@ ConfigureA JY-20412 Change Auto-log delayPLATFORM S...BACKLOG( JY-20361 AJ Panorama for Call Scoring in ODAUTOMATED...BACKLOG2.5==~ ActivityCommentsMorevX JY-20699 Wrong formatting for summary in th...BACKLOOM© JY-19628 Evaluation of AJ PanoramaASK ANYTHI...BACKLOGTtv•Av:=v +vA JY-20676 Notify the user if a Panorama prom..BACKLOGA JY-20615 Notify the user if a SS is deleted bu...AJ REPORTSBACKLOGA JY-20613 Allow owner's role to be selected w...BACKLOGQA- 0.5|BE -FE - 1.5( JY-20500 Batch initial sync for SalesforceCRM SYNCH...8. 8 + Nkolay YanikowA JY-20501 Batch initial sync for HubspotBACKLOGSaveCancel|JY-20503 Batch insert/update CRM objects in…A JY-20410 Update the templimeet.google.com is sharing your screen.Stop sharingHide100% <478• Mon 20 Apr 16:44:598Aneliya AngelovaGalya Dimitrova3 othersNikolay Yankov4:44 PM | [Platform] Refinement ®Lukas Kovalik1:43:11Lộ3...
|
NULL
|
9098337733768397151
|
NULL
|
click
|
ocr
|
NULL
|
+FirefoxFileEditViewHistoryBookmarksProfilesToolsW +FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelplbl→Cmeet.google.com/cxs-eips-npt?authuser=0Galya Dimitrova (Presenting, annotating)SafariFileEditViewHistoryBookmarksDevelopWindowHelpK52-8•Mon 20 Apr 16:44jiminny.atlassian.net|A Sentry3 HubSpot|8 ОрeпAl#f Seit ServiceAWS USAWS EUAWS AIPlanhat# Platform Te...Dust Docs|S. GTM Tren.7 A Jourmey-The Reven…88Search? For you• Recent|# Starred89 Apps& Plans0, SpacesStarredJiminny (New)ICD Platform TeamIID Processing TeamII SE KanbanIID Capture TeamIID Enterprise Stability I...DiscoveryProductRecent9 Service-Desk= More spaces |= FiltersIB DashboardsOperations& Customers|•] Еmой|E3 FesturesA LogRocketP PostmarkBamboo* Campus x|FirebaseE Ask Jimin.G) Demo Exn+ Create# UpgradeAsk RovoSpaces / Jiminny (New)Platform Team• Jira work item@ Summary|& Timeline• Backlog|IID Active sprints8 Calendar |C ReportsMore 9+> Automation 4 Rule executionsQ Search backlog |00800Version vEpic vType vMore v> featureOS |Open featureOSMiatrorm spnnt s UZ Zy Apr - 15 May (15 work Rems)175 10 0> SentrySl! Linked Issues• JY-20625 Jiminny MCP Connector|BACKLOGCreated 15 April 2026 at 14:09Updated 20 April 2026 at 15:15@ ConfigureA JY-20412 Change Auto-log delayPLATFORM S...BACKLOG( JY-20361 AJ Panorama for Call Scoring in ODAUTOMATED...BACKLOG2.5==~ ActivityCommentsMorevX JY-20699 Wrong formatting for summary in th...BACKLOOM© JY-19628 Evaluation of AJ PanoramaASK ANYTHI...BACKLOGTtv•Av:=v +vA JY-20676 Notify the user if a Panorama prom..BACKLOGA JY-20615 Notify the user if a SS is deleted bu...AJ REPORTSBACKLOGA JY-20613 Allow owner's role to be selected w...BACKLOGQA- 0.5|BE -FE - 1.5( JY-20500 Batch initial sync for SalesforceCRM SYNCH...8. 8 + Nkolay YanikowA JY-20501 Batch initial sync for HubspotBACKLOGSaveCancel|JY-20503 Batch insert/update CRM objects in…A JY-20410 Update the templimeet.google.com is sharing your screen.Stop sharingHide100% <478• Mon 20 Apr 16:44:598Aneliya AngelovaGalya Dimitrova3 othersNikolay Yankov4:44 PM | [Platform] Refinement ®Lukas Kovalik1:43:11Lộ3...
|
59379
|
|
56052
|
1212
|
15
|
2026-04-20T10:53:50.781084+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776682430781_m2.jpg...
|
Firefox
|
Firefox
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Firefox•..•EditVIewMistorbookmarksProtllesToolsWin Firefox•..•EditVIewMistorbookmarksProtllesToolsWindowmelp• github.com/jiminny/app/pull/11986Jy 19798 evaluation for ai activityJY-20553 | Improve crm-sync dela19 ISRD-67931 Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated repAsk Jiminny Reports by nikolay-ya- New TabProduct Growth Platform | UserpiloU Userpilot I Loaaed-activity(fix(security): composer dependerPipelines - jiminny/app) Feed - jiminny - Sentry8 Jiminny7 Jiminnv8 Jiminny(JY-20692] Issue with reconnectJy-20692 change confirmation X# (UY-20692) Issue with reconnectin19 ISRD-67871 Issue with reconnect+ New TabRookmarksSearch bookmarksv la bookmarks loolbaSprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov • ...© Circle CI& PROD USv E Bookmarks Menu> → Mozilla FirefoxD Other Bookmarks15350$3 OpenJY-20692 change confirmation parameter #11986LakyLak wants to merge 2 commits into master from JY-20692-fix-integration-app-[API_KEY] @150150+if (connection && connection.disconnected === false) {if (connection && connection.disconnected !== true && connection.connected !== falsinikolay-yankov 3 days agocan we simplify this by? Will it work like that?Suggested change150 false) if (connection &a connection disconected l= true && connection connected I=150 +true, if (connection && connection. disconnected a== false && connection. connected ===Commit suggestion Add suggestion to batch@ LakyLak 4 hours agoIt is a loose checks that treats underined or null as acceptable statesAuthor ...& nikolay-yankov 3 hours agoMy suagestion doesn't remove this. It simolities it ov removina double negation checksReply...Resoive conversationvalokin-jiminny commented 2 hours [EMAIL] bot commented 2 hours aao. editedClaude finished @yalokin-jiminny's task in 52s — View jobAnalysis of the condition discussionE Read changed files and analyze the condition...
|
NULL
|
9098296261102362184
|
NULL
|
visual_change
|
ocr
|
NULL
|
Firefox•..•EditVIewMistorbookmarksProtllesToolsWin Firefox•..•EditVIewMistorbookmarksProtllesToolsWindowmelp• github.com/jiminny/app/pull/11986Jy 19798 evaluation for ai activityJY-20553 | Improve crm-sync dela19 ISRD-67931 Les Mills activity typeJY-20698 handle failed field sync•JY-20692 change confirmation pa(JY-20543) AJ Reports > Trackina(UY-18909) (Part2) Automated repAsk Jiminny Reports by nikolay-ya- New TabProduct Growth Platform | UserpiloU Userpilot I Loaaed-activity(fix(security): composer dependerPipelines - jiminny/app) Feed - jiminny - Sentry8 Jiminny7 Jiminnv8 Jiminny(JY-20692] Issue with reconnectJy-20692 change confirmation X# (UY-20692) Issue with reconnectin19 ISRD-67871 Issue with reconnect+ New TabRookmarksSearch bookmarksv la bookmarks loolbaSprint Board# SRD QueueGithubJiminny DEVAsk Jiminny Reports by nikolay-yankov • ...© Circle CI& PROD USv E Bookmarks Menu> → Mozilla FirefoxD Other Bookmarks15350$3 OpenJY-20692 change confirmation parameter #11986LakyLak wants to merge 2 commits into master from JY-20692-fix-integration-app-[API_KEY] @150150+if (connection && connection.disconnected === false) {if (connection && connection.disconnected !== true && connection.connected !== falsinikolay-yankov 3 days agocan we simplify this by? Will it work like that?Suggested change150 false) if (connection &a connection disconected l= true && connection connected I=150 +true, if (connection && connection. disconnected a== false && connection. connected ===Commit suggestion Add suggestion to batch@ LakyLak 4 hours agoIt is a loose checks that treats underined or null as acceptable statesAuthor ...& nikolay-yankov 3 hours agoMy suagestion doesn't remove this. It simolities it ov removina double negation checksReply...Resoive conversationvalokin-jiminny commented 2 hours [EMAIL] bot commented 2 hours aao. editedClaude finished @yalokin-jiminny's task in 52s — View jobAnalysis of the condition discussionE Read changed files and analyze the condition...
|
NULL
|
|
54658
|
1182
|
9
|
2026-04-20T09:13:33.997393+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776676413997_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
1
|
NULL
|
monitor_2
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Carbon\CarbonImmutable;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
public static function frequencyDateRangeProvider(): array
{
return [
'daily' => [
AutomatedReportsService::FREQUENCY_DAILY,
'2025-06-15 00:00:00',
'2025-06-15 23:59:59',
],
'weekly' => [
AutomatedReportsService::FREQUENCY_WEEKLY,
'2025-06-09 00:00:00',
'2025-06-15 23:59:59',
],
'monthly' => [
AutomatedReportsService::FREQUENCY_MONTHLY,
'2025-05-01 00:00:00',
'2025-05-31 23:59:59',
],
'quarterly' => [
AutomatedReportsService::FREQUENCY_QUARTERLY,
'2025-01-01 00:00:00',
'2025-03-31 23:59:59',
],
];
}
/**
* @dataProvider frequencyDateRangeProvider
*/
public function testGetActivityIdsInjectsDateRangeForFrequency(
string $frequency,
string $expectedStartDate,
string $expectedEndDate,
): void {
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);
$this->assertNotNull($capturedCriteria);
$this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void
{
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');
$savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);
$this->assertNotNull($capturedCriteria);
$this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
9
12
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM automated_reports where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded'
and status = 'completed' and actual_start_time >= '2025-12-01'
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.025930852,"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":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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":"2","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.007978723,"height":0.0},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.00731383,"height":0.0},"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.27027926,"top":1.0,"width":0.006981383,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Carbon\\CarbonImmutable;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n\n public static function frequencyDateRangeProvider(): array\n {\n return [\n 'daily' => [\n AutomatedReportsService::FREQUENCY_DAILY,\n '2025-06-15 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'weekly' => [\n AutomatedReportsService::FREQUENCY_WEEKLY,\n '2025-06-09 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'monthly' => [\n AutomatedReportsService::FREQUENCY_MONTHLY,\n '2025-05-01 00:00:00',\n '2025-05-31 23:59:59',\n ],\n 'quarterly' => [\n AutomatedReportsService::FREQUENCY_QUARTERLY,\n '2025-01-01 00:00:00',\n '2025-03-31 23:59:59',\n ],\n ];\n }\n\n /**\n * @dataProvider frequencyDateRangeProvider\n */\n public function testGetActivityIdsInjectsDateRangeForFrequency(\n string $frequency,\n string $expectedStartDate,\n string $expectedEndDate,\n ): void {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n\n public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void\n {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');\n $savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n}","depth":4,"bounds":{"left":0.13863032,"top":0.27055067,"width":0.34375,"height":0.72944933},"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Carbon\\CarbonImmutable;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n\n public static function frequencyDateRangeProvider(): array\n {\n return [\n 'daily' => [\n AutomatedReportsService::FREQUENCY_DAILY,\n '2025-06-15 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'weekly' => [\n AutomatedReportsService::FREQUENCY_WEEKLY,\n '2025-06-09 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'monthly' => [\n AutomatedReportsService::FREQUENCY_MONTHLY,\n '2025-05-01 00:00:00',\n '2025-05-31 23:59:59',\n ],\n 'quarterly' => [\n AutomatedReportsService::FREQUENCY_QUARTERLY,\n '2025-01-01 00:00:00',\n '2025-03-31 23:59:59',\n ],\n ];\n }\n\n /**\n * @dataProvider frequencyDateRangeProvider\n */\n public function testGetActivityIdsInjectsDateRangeForFrequency(\n string $frequency,\n string $expectedStartDate,\n string $expectedEndDate,\n ): void {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n\n public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void\n {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');\n $savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.40492022,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.41356382,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.4245346,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.4331782,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.4418218,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.45279256,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.4637633,"top":0.09896249,"width":0.024268618,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.49035904,"top":0.09896249,"width":0.008643617,"height":0.01915403},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.5013298,"top":0.09896249,"width":0.029587766,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.69913566,"top":0.09896249,"width":0.02825798,"height":0.01915403},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.042220745,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.008643617,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.6732048,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"12","depth":4,"bounds":{"left":0.6831782,"top":0.123703115,"width":0.009640957,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.69481385,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.70478725,"top":0.123703115,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7144282,"top":0.12210695,"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.72174203,"top":0.12210695,"width":0.006981383,"height":0.018355945},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM automated_reports where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded'\nand status = 'completed' and actual_start_time >= '2025-12-01'","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM automated_reports where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded'\nand status = 'completed' and actual_start_time >= '2025-12-01'","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"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}]...
|
9098190514209152896
|
2146703058527524421
|
visual_change
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Carbon\CarbonImmutable;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
public static function frequencyDateRangeProvider(): array
{
return [
'daily' => [
AutomatedReportsService::FREQUENCY_DAILY,
'2025-06-15 00:00:00',
'2025-06-15 23:59:59',
],
'weekly' => [
AutomatedReportsService::FREQUENCY_WEEKLY,
'2025-06-09 00:00:00',
'2025-06-15 23:59:59',
],
'monthly' => [
AutomatedReportsService::FREQUENCY_MONTHLY,
'2025-05-01 00:00:00',
'2025-05-31 23:59:59',
],
'quarterly' => [
AutomatedReportsService::FREQUENCY_QUARTERLY,
'2025-01-01 00:00:00',
'2025-03-31 23:59:59',
],
];
}
/**
* @dataProvider frequencyDateRangeProvider
*/
public function testGetActivityIdsInjectsDateRangeForFrequency(
string $frequency,
string $expectedStartDate,
string $expectedEndDate,
): void {
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);
$this->assertNotNull($capturedCriteria);
$this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void
{
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');
$savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);
$this->assertNotNull($capturedCriteria);
$this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
9
12
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM automated_reports where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded'
and status = 'completed' and actual_start_time >= '2025-12-01'
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
NULL
|
|
54659
|
1181
|
4
|
2026-04-20T09:13:43.805384+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776676423805_m1.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
1
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Carbon\CarbonImmutable;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
public static function frequencyDateRangeProvider(): array
{
return [
'daily' => [
AutomatedReportsService::FREQUENCY_DAILY,
'2025-06-15 00:00:00',
'2025-06-15 23:59:59',
],
'weekly' => [
AutomatedReportsService::FREQUENCY_WEEKLY,
'2025-06-09 00:00:00',
'2025-06-15 23:59:59',
],
'monthly' => [
AutomatedReportsService::FREQUENCY_MONTHLY,
'2025-05-01 00:00:00',
'2025-05-31 23:59:59',
],
'quarterly' => [
AutomatedReportsService::FREQUENCY_QUARTERLY,
'2025-01-01 00:00:00',
'2025-03-31 23:59:59',
],
];
}
/**
* @dataProvider frequencyDateRangeProvider
*/
public function testGetActivityIdsInjectsDateRangeForFrequency(
string $frequency,
string $expectedStartDate,
string $expectedEndDate,
): void {
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);
$this->assertNotNull($capturedCriteria);
$this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void
{
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');
$savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);
$this->assertNotNull($capturedCriteria);
$this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
9
12
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM automated_reports where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded'
and status = 'completed' and actual_start_time >= '2025-12-01'
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#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","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":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"3","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"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 Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Carbon\\CarbonImmutable;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n\n public static function frequencyDateRangeProvider(): array\n {\n return [\n 'daily' => [\n AutomatedReportsService::FREQUENCY_DAILY,\n '2025-06-15 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'weekly' => [\n AutomatedReportsService::FREQUENCY_WEEKLY,\n '2025-06-09 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'monthly' => [\n AutomatedReportsService::FREQUENCY_MONTHLY,\n '2025-05-01 00:00:00',\n '2025-05-31 23:59:59',\n ],\n 'quarterly' => [\n AutomatedReportsService::FREQUENCY_QUARTERLY,\n '2025-01-01 00:00:00',\n '2025-03-31 23:59:59',\n ],\n ];\n }\n\n /**\n * @dataProvider frequencyDateRangeProvider\n */\n public function testGetActivityIdsInjectsDateRangeForFrequency(\n string $frequency,\n string $expectedStartDate,\n string $expectedEndDate,\n ): void {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n\n public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void\n {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');\n $savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Kiosk\\AutomatedReports;\n\nuse Carbon\\CarbonImmutable;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityActualDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\ActivityUpdatedDate;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinition\\DealInsights\\ClosingPeriodFilter;\nuse Jiminny\\Component\\ActivitySearch\\FilterDefinitionCollection;\nuse Jiminny\\Component\\ActivitySearch\\Service\\ActivitySearch;\nuse Jiminny\\Models\\Activity\\Search;\nuse Jiminny\\Models\\Activity\\SearchFilter;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Repositories\\ElasticActivityRepository;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AskJiminnyReportActivityService;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Jiminny\\VO\\Repository\\OnDemandActivitySearch\\Criteria;\nuse PHPUnit\\Framework\\MockObject\\MockObject;\nuse PHPUnit\\Framework\\TestCase;\nuse Psr\\Log\\LoggerInterface;\n\nclass AskJiminnyReportActivityServiceTest extends TestCase\n{\n private ActivitySearch&MockObject $activitySearch;\n private ElasticActivityRepository&MockObject $elasticRepository;\n private LoggerInterface&MockObject $logger;\n private AskJiminnyReportActivityService $service;\n\n protected function setUp(): void\n {\n $this->activitySearch = $this->createMock(ActivitySearch::class);\n $this->elasticRepository = $this->createMock(ElasticActivityRepository::class);\n $this->logger = $this->createMock(LoggerInterface::class);\n\n $this->service = new AskJiminnyReportActivityService(\n $this->activitySearch,\n $this->elasticRepository,\n $this->logger,\n );\n }\n\n private function makeFilter(string $key, ?string $value): SearchFilter&MockObject\n {\n $filter = $this->createMock(SearchFilter::class);\n $filter->method('getFilterProperty')->willReturn($key);\n $filter->method('getFilterValue')->willReturn($value);\n\n return $filter;\n }\n\n private function makeUser(): User&MockObject\n {\n $tz = new \\DateTimeZone('UTC');\n $user = $this->createMock(User::class);\n $user->method('getTimezone')->willReturn($tz);\n $user->method('getId')->willReturn(1);\n $user->method('getUuid')->willReturn('user-uuid');\n\n return $user;\n }\n\n private function makeSavedSearch(array $filters): Search&MockObject\n {\n $savedSearch = $this->createMock(Search::class);\n $savedSearch->method('getId')->willReturn(42);\n $savedSearch->method('getFilters')->willReturn(new \\Illuminate\\Support\\LazyCollection($filters));\n\n return $savedSearch;\n }\n\n public function testGetActivityIdsForSavedSearchReturnsIds(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->expects($this->once())\n ->method('getArrayFilterKeys')\n ->with($user)\n ->willReturn([]);\n\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n\n $this->elasticRepository->expects($this->once())\n ->method('onDemandSearchIdsOnly')\n ->willReturn(['id-1', 'id-2', 'id-3']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with('[AskJiminnyReport] Fetched activity IDs for saved search');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1', 'id-2', 'id-3'], $result);\n }\n\n public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $this->logger->expects($this->once())->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEmpty($result);\n }\n\n public function testGetActivityIdsFiltersOutDateFilters(): void\n {\n $user = $this->makeUser();\n\n $nonDateFilter = $this->makeFilter('owner_id', '123');\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');\n $updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');\n $updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');\n\n $savedSearch = $this->makeSavedSearch([\n $nonDateFilter,\n $startDateFilter,\n $endDateFilter,\n $updatedFromFilter,\n $updatedToFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n }\n\n public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void\n {\n $user = $this->makeUser();\n\n $closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');\n $closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');\n $regularFilter = $this->makeFilter('rep_id', '99');\n\n $savedSearch = $this->makeSavedSearch([\n $closingStartFilter,\n $closingEndFilter,\n $regularFilter,\n ]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesArrayFilters(): void\n {\n $user = $this->makeUser();\n\n $filter1 = $this->makeFilter('outcome', 'positive');\n $filter2 = $this->makeFilter('outcome', 'negative');\n\n $savedSearch = $this->makeSavedSearch([$filter1, $filter2]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-1'], $result);\n }\n\n public function testGetActivityIdsHandlesScalarFilters(): void\n {\n $user = $this->makeUser();\n\n $filter = $this->makeFilter('direction', 'inbound');\n $savedSearch = $this->makeSavedSearch([$filter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);\n $this->logger->method('info');\n\n $result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertEquals(['id-5'], $result);\n }\n\n public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n $this->logger->method('info');\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertFalse($capturedCriteria->isFirstRequest());\n }\n\n public function testGetActivityIdsLogsWithCorrectContext(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);\n\n $this->logger->expects($this->once())\n ->method('info')\n ->with(\n '[AskJiminnyReport] Fetched activity IDs for saved search',\n $this->callback(fn ($context) => $context['saved_search_id'] === 42\n && $context['user_id'] === 1\n && $context['activity_count'] === 2)\n );\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user);\n }\n\n public static function frequencyDateRangeProvider(): array\n {\n return [\n 'daily' => [\n AutomatedReportsService::FREQUENCY_DAILY,\n '2025-06-15 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'weekly' => [\n AutomatedReportsService::FREQUENCY_WEEKLY,\n '2025-06-09 00:00:00',\n '2025-06-15 23:59:59',\n ],\n 'monthly' => [\n AutomatedReportsService::FREQUENCY_MONTHLY,\n '2025-05-01 00:00:00',\n '2025-05-31 23:59:59',\n ],\n 'quarterly' => [\n AutomatedReportsService::FREQUENCY_QUARTERLY,\n '2025-01-01 00:00:00',\n '2025-03-31 23:59:59',\n ],\n ];\n }\n\n /**\n * @dataProvider frequencyDateRangeProvider\n */\n public function testGetActivityIdsInjectsDateRangeForFrequency(\n string $frequency,\n string $expectedStartDate,\n string $expectedEndDate,\n ): void {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n\n public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void\n {\n $user = $this->makeUser();\n $savedSearch = $this->makeSavedSearch([]);\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertNull($capturedCriteria->getStartDate());\n $this->assertNull($capturedCriteria->getEndDate());\n }\n\n public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void\n {\n CarbonImmutable::setTestNow('2025-06-16 12:00:00');\n\n try {\n $user = $this->makeUser();\n\n $startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');\n $endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');\n $savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);\n\n $filterSet = $this->createMock(FilterDefinitionCollection::class);\n\n $this->activitySearch->method('getArrayFilterKeys')->willReturn([]);\n $this->logger->method('info');\n $this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);\n\n $capturedCriteria = null;\n $this->activitySearch->expects($this->once())\n ->method('getOnDemandPageFilterSet')\n ->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {\n $capturedCriteria = $criteria;\n\n return $filterSet;\n });\n\n $this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);\n\n $this->assertNotNull($capturedCriteria);\n $this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));\n $this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));\n } finally {\n CarbonImmutable::setTestNow();\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"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":"9","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"12","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM automated_reports where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded'\nand status = 'completed' and actual_start_time >= '2025-12-01'","depth":4,"value":"SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o\nJOIN activities a ON o.id = a.opportunity_id\nWHERE a.crm_configuration_id = 39\nAND a.actual_start_time > '2025-10-13'\nAND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM activities\nWHERE crm_configuration_id = 39 and user_id = 143\nand actual_start_time >= '2025-10-13'\nAND type IN ('conference', 'softphone-inbound', 'softphone-outbound')\n;\n\nSELECT * FROM opportunities WHERE account_id IN (178);\nselect * from activities where id IN (620137, 620187, 620188, 620189, 620230);\n\n# HS\nSELECT * FROM opportunities WHERE id IN (238);\nselect * from activities where id IN (477,2076);\n\nselect * from users;\n\nSELECT COUNT(*) FROM users;\nSELECT COUNT(*) FROM activities;\nSELECT COUNT(*) FROM opportunities;\n\nUPDATE activities\nSET\n actual_start_time = '2025-12-19 09:00:00',\n actual_end_time = '2025-12-19 10:30:00',\n scheduled_start_time = '2025-12-19 09:00:00',\n scheduled_end_time = '2025-12-19 10:30:00'\nWHERE id IN (407509,407375);\n\nselect * from partners;\n\nSELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id\nFROM activities\nWHERE user_id = 143\nAND actual_start_time >= '2025-10-13 00:00:00'\nAND actual_start_time <= '2026-01-13 23:59:59'\nORDER BY actual_start_time DESC;\n\nSELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;\nSELECT * FROM crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;\n# lead_id\n# account_id 177\n# contact_id 3969\n# opportunity_id\n# stage_id 203\n\nSELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;\n\nSELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'\nAND user_id = 143 and actual_start_time >= '2025-10-13';\n\nSELECT * FROM activities a\n# JOIN opportunities o ON a.opportunity_id = o.id\nWHERE a.crm_configuration_id = 39 AND a.type = 'conference'\nand status = 'completed' and recording_state = 'recorded'\nand a.actual_start_time >= '2025-10-13'\nAND a.user_id = 143\n;\n\nselect * from leads\nwhere crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707\n\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);\nSELECT * FROM activities WHERE id IN (356013,616188,616202,616310);\nSELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198\nSELECT * FROM activities WHERE id IN (356001, 356008); # contacts:\n\nSELECT * FROM opportunities WHERE id IN (1707);\nSELECT * FROM stages where id IN (204, 198);\nSELECT * FROM opportunities WHERE account_id IN (178);\nSELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';\nSELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal\n\nSELECT * FROM activities where crm_configuration_id = 39\nAND opportunity_id IS NULL\nAND is_internal = false\nand status = 'completed' and recording_state = 'recorded'\nAND actual_start_time >= '2025-10-13'\nAND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)\n# AND lead_id IN (112, 109)\n;\n\nSELECT * FROM crm_profiles WHERE user_id = 143;\n\nselect * from inboxes; # 212\nselect * from users where id = 143; # 143\nselect * from inbox_email_batches where inbox_id = 212\nand updated_at >= '2026-01-28 00:00:00' order by id desc;\nselect * from inbox_emails where inbox_id = 212\nand batch_id = 95885 order by id desc;\nselect * from email_messages where origin_user_id = 143;\nselect * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';\nselect * from participants where activity_id = 620247;\n\nselect * from crm_profiles where user_id = 143;\n\nSELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001\nselect * from transcription where activity_id = 356001; # 6943\nselect * from ai_prompts where transcription_id = 6943;\nSELECT * FROM activity_summary_logs where activity_id = 356001;\n\nSELECT * FROM social_accounts WHERE sociable_id = 143;\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;\n# 422515 softphone tr. 8100\n\nSELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;\n# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS\n\nselect * from ai_prompts where transcription_id IN (8100, 7670);\nselect * from activity_summary_logs where activity_id = 407509;\n\nselect * from sidekick_settings;\nselect * from default_activity_types;\n\nSELECT * FROM contacts WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\nSELECT * FROM leads WHERE crm_configuration_id = 39 and email = 'm.kogoj@gmx.at';\n\nSELECT * FROM activity_searches where user_id = 143;\nSELECT * FROM groups where team_id = 1;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1; # 1150 - 7e75f8025c22\nselect id, name, group_id, status, deleted_at, email\nfrom users where team_id = 1 order by group_id desc ;\n\nselect * from activity_searches where id in (1977, 1978, 1979);\nselect * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);\nselect * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277\nselect * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879\n\nINSERT INTO `activity_search_filters`\n(`activity_search_id`, `filter`, `value`) VALUES\n(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),\n(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')\n;\n\nselect * from crm_configurations where id = 39;\n\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\nselect * from features;\n\nSELECT * FROM activity_searches where id = 1982; # 1981\nSELECT * FROM activity_search_filters WHERE activity_search_id = 1982;\n\nSELECT * FROM automated_reports where id = 68;\nSELECT * FROM automated_report_results where id = 275;\n\nSELECT * FROM automated_reports order by id desc;\nSELECT * FROM automated_report_results order by id desc;\nselect * from activity_searches where user_id = 143;\nselect * from ask_anything_prompts;\n\nSELECT * FROM groups WHERE id = 1439;\nSELECT * FROM users WHERE group_id = 1439;\n\nselect * from permissions; # 158\nselect * from roles;\nselect * from permission_role\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 28;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 179;\nselect * from playbook_categories where id = 1391;\nselect * from users where id = 143;\nselect * from crm_profiles where user_id = 143;\nselect * from activities where crm_configuration_id = 39 and type = 'conference'\nand crm_provider_id IS NOT NULL ORDER by id desc;\nselect * from activities where id = 422003; # 00UO400000pB6fpMAC\n\nSELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type\nFROM automated_report_results ar\nJOIN automated_reports a ON a.id = ar.report_id\nWHERE a.type = 'ask_jiminny'\nLIMIT 10;\n\n\nselect * from teams where id = 3143;\nselect * from crm_configurations where id = 500;\nselect * from users where name = 'Integration Account'; # 1695\nSELECT * FROM social_accounts WHERE sociable_id = 1695;\n\nselect * from activities where crm_configuration_id = 39\nand recording_state = 'recorded'\nand status = 'completed' and actual_start_time >= '2025-12-01'","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
9098190514209152896
|
2146703058527524421
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
2
3
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Kiosk\AutomatedReports;
use Carbon\CarbonImmutable;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityActualDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\ActivityUpdatedDate;
use Jiminny\Component\ActivitySearch\FilterDefinition\DealInsights\ClosingPeriodFilter;
use Jiminny\Component\ActivitySearch\FilterDefinitionCollection;
use Jiminny\Component\ActivitySearch\Service\ActivitySearch;
use Jiminny\Models\Activity\Search;
use Jiminny\Models\Activity\SearchFilter;
use Jiminny\Models\User;
use Jiminny\Repositories\ElasticActivityRepository;
use Jiminny\Services\Kiosk\AutomatedReports\AskJiminnyReportActivityService;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Jiminny\VO\Repository\OnDemandActivitySearch\Criteria;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;
use Psr\Log\LoggerInterface;
class AskJiminnyReportActivityServiceTest extends TestCase
{
private ActivitySearch&MockObject $activitySearch;
private ElasticActivityRepository&MockObject $elasticRepository;
private LoggerInterface&MockObject $logger;
private AskJiminnyReportActivityService $service;
protected function setUp(): void
{
$this->activitySearch = $this->createMock(ActivitySearch::class);
$this->elasticRepository = $this->createMock(ElasticActivityRepository::class);
$this->logger = $this->createMock(LoggerInterface::class);
$this->service = new AskJiminnyReportActivityService(
$this->activitySearch,
$this->elasticRepository,
$this->logger,
);
}
private function makeFilter(string $key, ?string $value): SearchFilter&MockObject
{
$filter = $this->createMock(SearchFilter::class);
$filter->method('getFilterProperty')->willReturn($key);
$filter->method('getFilterValue')->willReturn($value);
return $filter;
}
private function makeUser(): User&MockObject
{
$tz = new \DateTimeZone('UTC');
$user = $this->createMock(User::class);
$user->method('getTimezone')->willReturn($tz);
$user->method('getId')->willReturn(1);
$user->method('getUuid')->willReturn('user-uuid');
return $user;
}
private function makeSavedSearch(array $filters): Search&MockObject
{
$savedSearch = $this->createMock(Search::class);
$savedSearch->method('getId')->willReturn(42);
$savedSearch->method('getFilters')->willReturn(new \Illuminate\Support\LazyCollection($filters));
return $savedSearch;
}
public function testGetActivityIdsForSavedSearchReturnsIds(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->expects($this->once())
->method('getArrayFilterKeys')
->with($user)
->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->expects($this->once())
->method('onDemandSearchIdsOnly')
->willReturn(['id-1', 'id-2', 'id-3']);
$this->logger->expects($this->once())
->method('info')
->with('[AskJiminnyReport] Fetched activity IDs for saved search');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1', 'id-2', 'id-3'], $result);
}
public function testGetActivityIdsForSavedSearchReturnsEmptyWhenNoResults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->expects($this->once())->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEmpty($result);
}
public function testGetActivityIdsFiltersOutDateFilters(): void
{
$user = $this->makeUser();
$nonDateFilter = $this->makeFilter('owner_id', '123');
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2025-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2025-01-31 23:59:59');
$updatedFromFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_FROM, '2025-01-01 00:00:00');
$updatedToFilter = $this->makeFilter(ActivityUpdatedDate::PARAM_UPDATED_TO, '2025-01-31 23:59:59');
$savedSearch = $this->makeSavedSearch([
$nonDateFilter,
$startDateFilter,
$endDateFilter,
$updatedFromFilter,
$updatedToFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
}
public function testGetActivityIdsFiltersOutClosingPeriodDateFilters(): void
{
$user = $this->makeUser();
$closingStartFilter = $this->makeFilter(ClosingPeriodFilter::KEY_START_DATE, '2025-01-01');
$closingEndFilter = $this->makeFilter(ClosingPeriodFilter::KEY_END_DATE, '2025-03-31');
$regularFilter = $this->makeFilter('rep_id', '99');
$savedSearch = $this->makeSavedSearch([
$closingStartFilter,
$closingEndFilter,
$regularFilter,
]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesArrayFilters(): void
{
$user = $this->makeUser();
$filter1 = $this->makeFilter('outcome', 'positive');
$filter2 = $this->makeFilter('outcome', 'negative');
$savedSearch = $this->makeSavedSearch([$filter1, $filter2]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn(['outcome']);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-1']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-1'], $result);
}
public function testGetActivityIdsHandlesScalarFilters(): void
{
$user = $this->makeUser();
$filter = $this->makeFilter('direction', 'inbound');
$savedSearch = $this->makeSavedSearch([$filter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['id-5']);
$this->logger->method('info');
$result = $this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertEquals(['id-5'], $result);
}
public function testGetActivityIdsPassesNonZeroSequenceNumberToDisableFirstRequestDefaults(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$this->logger->method('info');
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
$this->assertNotNull($capturedCriteria);
$this->assertFalse($capturedCriteria->isFirstRequest());
}
public function testGetActivityIdsLogsWithCorrectContext(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->activitySearch->method('getOnDemandPageFilterSet')->willReturn($filterSet);
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn(['a', 'b']);
$this->logger->expects($this->once())
->method('info')
->with(
'[AskJiminnyReport] Fetched activity IDs for saved search',
$this->callback(fn ($context) => $context['saved_search_id'] === 42
&& $context['user_id'] === 1
&& $context['activity_count'] === 2)
);
$this->service->getActivityIdsForSavedSearch($savedSearch, $user);
}
public static function frequencyDateRangeProvider(): array
{
return [
'daily' => [
AutomatedReportsService::FREQUENCY_DAILY,
'2025-06-15 00:00:00',
'2025-06-15 23:59:59',
],
'weekly' => [
AutomatedReportsService::FREQUENCY_WEEKLY,
'2025-06-09 00:00:00',
'2025-06-15 23:59:59',
],
'monthly' => [
AutomatedReportsService::FREQUENCY_MONTHLY,
'2025-05-01 00:00:00',
'2025-05-31 23:59:59',
],
'quarterly' => [
AutomatedReportsService::FREQUENCY_QUARTERLY,
'2025-01-01 00:00:00',
'2025-03-31 23:59:59',
],
];
}
/**
* @dataProvider frequencyDateRangeProvider
*/
public function testGetActivityIdsInjectsDateRangeForFrequency(
string $frequency,
string $expectedStartDate,
string $expectedEndDate,
): void {
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, $frequency);
$this->assertNotNull($capturedCriteria);
$this->assertSame($expectedStartDate, $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame($expectedEndDate, $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
public function testGetActivityIdsWithNullFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, null);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsWithUnknownFrequencyDoesNotInjectDates(): void
{
$user = $this->makeUser();
$savedSearch = $this->makeSavedSearch([]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_ONE_OFF);
$this->assertNotNull($capturedCriteria);
$this->assertNull($capturedCriteria->getStartDate());
$this->assertNull($capturedCriteria->getEndDate());
}
public function testGetActivityIdsFrequencyDateRangeOverridesSavedSearchDateFilters(): void
{
CarbonImmutable::setTestNow('2025-06-16 12:00:00');
try {
$user = $this->makeUser();
$startDateFilter = $this->makeFilter(ActivityActualDate::PARAM_START_DATE, '2024-01-01 00:00:00');
$endDateFilter = $this->makeFilter(ActivityActualDate::PARAM_END_DATE, '2024-12-31 23:59:59');
$savedSearch = $this->makeSavedSearch([$startDateFilter, $endDateFilter]);
$filterSet = $this->createMock(FilterDefinitionCollection::class);
$this->activitySearch->method('getArrayFilterKeys')->willReturn([]);
$this->logger->method('info');
$this->elasticRepository->method('onDemandSearchIdsOnly')->willReturn([]);
$capturedCriteria = null;
$this->activitySearch->expects($this->once())
->method('getOnDemandPageFilterSet')
->willReturnCallback(function (Criteria $criteria) use ($filterSet, &$capturedCriteria) {
$capturedCriteria = $criteria;
return $filterSet;
});
$this->service->getActivityIdsForSavedSearch($savedSearch, $user, AutomatedReportsService::FREQUENCY_DAILY);
$this->assertNotNull($capturedCriteria);
$this->assertSame('2025-06-15 00:00:00', $capturedCriteria->getStartDate()->format('Y-m-d H:i:s'));
$this->assertSame('2025-06-15 23:59:59', $capturedCriteria->getEndDate()->format('Y-m-d H:i:s'));
} finally {
CarbonImmutable::setTestNow();
}
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Code changed:
Hide
Sync Changes
Hide This Notification
9
12
2
4
Previous Highlighted Error
Next Highlighted Error
SELECT a.id, a.uuid, a.actual_start_time, o.id, o.uuid FROM opportunities o
JOIN activities a ON o.id = a.opportunity_id
WHERE a.crm_configuration_id = 39
AND a.actual_start_time > '2025-10-13'
AND a.type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM activities
WHERE crm_configuration_id = 39 and user_id = 143
and actual_start_time >= '2025-10-13'
AND type IN ('conference', 'softphone-inbound', 'softphone-outbound')
;
SELECT * FROM opportunities WHERE account_id IN (178);
select * from activities where id IN (620137, 620187, 620188, 620189, 620230);
# HS
SELECT * FROM opportunities WHERE id IN (238);
select * from activities where id IN (477,2076);
select * from users;
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM activities;
SELECT COUNT(*) FROM opportunities;
UPDATE activities
SET
actual_start_time = '2025-12-19 09:00:00',
actual_end_time = '2025-12-19 10:30:00',
scheduled_start_time = '2025-12-19 09:00:00',
scheduled_end_time = '2025-12-19 10:30:00'
WHERE id IN (407509,407375);
select * from partners;
SELECT id, uuid, type, actual_start_time, user_id, crm_configuration_id
FROM activities
WHERE user_id = 143
AND actual_start_time >= '2025-10-13 00:00:00'
AND actual_start_time <= '2026-01-13 23:59:59'
ORDER BY actual_start_time DESC;
SELECT * FROM activities WHERE uuid_to_bin('78eda160-3086-435f-88a5-bb0c71b6008d') = uuid;
SELECT * FROM crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 282;
# lead_id
# account_id 177
# contact_id 3969
# opportunity_id
# stage_id 203
SELECT * FROM opportunities WHERE opportunities.crm_configuration_id = id = 282;
SELECT * FROM activities where crm_configuration_id = 39 AND type = 'conference'
AND user_id = 143 and actual_start_time >= '2025-10-13';
SELECT * FROM activities a
# JOIN opportunities o ON a.opportunity_id = o.id
WHERE a.crm_configuration_id = 39 AND a.type = 'conference'
and status = 'completed' and recording_state = 'recorded'
and a.actual_start_time >= '2025-10-13'
AND a.user_id = 143
;
select * from leads
where crm_configuration_id = 39; # 112 -> ac. 178, 109 => op. 1707
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310,407509,407375,356001,356008);
SELECT * FROM activities WHERE id IN (356013,616188,616202,616310);
SELECT * FROM activities WHERE id IN (407509,407375); # leads: 112, 109 | status - 198
SELECT * FROM activities WHERE id IN (356001, 356008); # contacts:
SELECT * FROM opportunities WHERE id IN (1707);
SELECT * FROM stages where id IN (204, 198);
SELECT * FROM opportunities WHERE account_id IN (178);
SELECT * FROM opportunities WHERE crm_configuration_id = 39 AND created_at > '2025-01-01';
SELECT * FROM contacts WHERE account_id IN (178); # 4118 Musaibe, 4448 Ceco Personal
SELECT * FROM activities where crm_configuration_id = 39
AND opportunity_id IS NULL
AND is_internal = false
and status = 'completed' and recording_state = 'recorded'
AND actual_start_time >= '2025-10-13'
AND (lead_id IS NOT NULL OR contact_id IS NOT NULL OR account_id IS NOT NULL)
# AND lead_id IN (112, 109)
;
SELECT * FROM crm_profiles WHERE user_id = 143;
select * from inboxes; # 212
select * from users where id = 143; # 143
select * from inbox_email_batches where inbox_id = 212
and updated_at >= '2026-01-28 00:00:00' order by id desc;
select * from inbox_emails where inbox_id = 212
and batch_id = 95885 order by id desc;
select * from email_messages where origin_user_id = 143;
select * from activities where user_id = 143 and updated_at >= '2026-01-28 00:00:00';
select * from participants where activity_id = 620247;
select * from crm_profiles where user_id = 143;
SELECT * FROM activities WHERE uuid_to_bin('458cf915-b914-4000-b083-5687b32b2956') = uuid; # 356001
select * from transcription where activity_id = 356001; # 6943
select * from ai_prompts where transcription_id = 6943;
SELECT * FROM activity_summary_logs where activity_id = 356001;
SELECT * FROM social_accounts WHERE sociable_id = 143;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('0164a4fb-cb95-454e-9edd-4d804e4999bd') = uuid;
# 422515 softphone tr. 8100
SELECT * FROM activities WHERE uuid_to_bin('7520add8-8d87-41a5-98e5-fc4edf96f21e') = uuid;
# 407509 conference tr. 7670 crmId: 00UD1000002J9aTMAS
select * from ai_prompts where transcription_id IN (8100, 7670);
select * from activity_summary_logs where activity_id = 407509;
select * from sidekick_settings;
select * from default_activity_types;
SELECT * FROM contacts WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM leads WHERE crm_configuration_id = 39 and email = '[EMAIL]';
SELECT * FROM activity_searches where user_id = 143;
SELECT * FROM groups where team_id = 1;
select * from teams where id = 1;
select * from groups where team_id = 1; # 1150 - 7e75f8025c22
select id, name, group_id, status, deleted_at, email
from users where team_id = 1 order by group_id desc ;
select * from activity_searches where id in (1977, 1978, 1979);
select * from activity_search_filters where activity_search_id IN (1977, 1978, 1979);
select * from activity_search_filters where filter = 'group_id' and value = '443f26b8-8512-437e-a9f9-7e75f8025c22'; # 10268, 10272, 10277
select * from nudges where activity_search_id IN (1977, 1978, 1979); # 877, 878, 879
INSERT INTO `activity_search_filters`
(`activity_search_id`, `filter`, `value`) VALUES
(1977, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1978, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22'),
(1979, 'group_id', '443f26b8-8512-437e-a9f9-7e75f8025c22')
;
select * from crm_configurations where id = 39;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from features;
SELECT * FROM activity_searches where id = 1982; # 1981
SELECT * FROM activity_search_filters WHERE activity_search_id = 1982;
SELECT * FROM automated_reports where id = 68;
SELECT * FROM automated_report_results where id = 275;
SELECT * FROM automated_reports order by id desc;
SELECT * FROM automated_report_results order by id desc;
select * from activity_searches where user_id = 143;
select * from ask_anything_prompts;
SELECT * FROM groups WHERE id = 1439;
SELECT * FROM users WHERE group_id = 1439;
select * from permissions; # 158
select * from roles;
select * from permission_role
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 28;
select * from playbooks where team_id = 1;
select * from playbooks where id = 179;
select * from playbook_categories where id = 1391;
select * from users where id = 143;
select * from crm_profiles where user_id = 143;
select * from activities where crm_configuration_id = 39 and type = 'conference'
and crm_provider_id IS NOT NULL ORDER by id desc;
select * from activities where id = 422003; # 00UO400000pB6fpMAC
SELECT ar.id, ar.uuid, ar.media_type, ar.status, a.type
FROM automated_report_results ar
JOIN automated_reports a ON a.id = ar.report_id
WHERE a.type = 'ask_jiminny'
LIMIT 10;
select * from teams where id = 3143;
select * from crm_configurations where id = 500;
select * from users where name = 'Integration Account'; # 1695
SELECT * FROM social_accounts WHERE sociable_id = 1695;
select * from activities where crm_configuration_id = 39
and recording_state = 'recorded'
and status = 'completed' and actual_start_time >= '2025-12-01'
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
54656
|
|
54949
|
1185
|
30
|
2026-04-20T09:25:31.490772+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677131490_m1.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-20 09:25:26] local.INFO: UPDATE {"correlation_id":"082b343f-d8cb-46e7-a1dc-c68314e3fa7f","trace_id":"b7988fcf-12ec-4222-9859-0f479bea409f"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#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","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":"AskJiminnyReportActivityServiceTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"[2026-04-20 09:25:26] local.INFO: UPDATE {\"correlation_id\":\"082b343f-d8cb-46e7-a1dc-c68314e3fa7f\",\"trace_id\":\"b7988fcf-12ec-4222-9859-0f479bea409f\"}","depth":4,"value":"[2026-04-20 09:25:26] local.INFO: UPDATE {\"correlation_id\":\"082b343f-d8cb-46e7-a1dc-c68314e3fa7f\",\"trace_id\":\"b7988fcf-12ec-4222-9859-0f479bea409f\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
9097319771604449483
|
-7048904252479002041
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-20 09:25:26] local.INFO: UPDATE {"correlation_id":"082b343f-d8cb-46e7-a1dc-c68314e3fa7f","trace_id":"b7988fcf-12ec-4222-9859-0f479bea409f"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
54947
|
|
54950
|
1186
|
35
|
2026-04-20T09:25:31.578367+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-20/1776 /Users/lukas/.screenpipe/data/data/2026-04-20/1776677131578_m2.jpg...
|
PhpStorm
|
faVsco.js – custom.log
|
1
|
NULL
|
monitor_2
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-20 09:25:26] local.INFO: UPDATE {"correlation_id":"082b343f-d8cb-46e7-a1dc-c68314e3fa7f","trace_id":"b7988fcf-12ec-4222-9859-0f479bea409f"}
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.025930852,"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":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.12134308,"height":0.025538707},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8081782,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AskJiminnyReportActivityServiceTest","depth":6,"bounds":{"left":0.8234708,"top":0.019952115,"width":0.09208777,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AskJiminnyReportActivityServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"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":"1","depth":4,"bounds":{"left":0.3700133,"top":0.273743,"width":0.00731383,"height":0.015163607},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.3793218,"top":0.273743,"width":0.007978723,"height":0.015163607},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.38896278,"top":0.27214685,"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.3962766,"top":0.27214685,"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\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers\\API\\V2;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Illuminate\\Http\\Request;\nuse Illuminate\\Routing\\Controller;\nuse Jiminny\\Exceptions\\InvalidArgumentException;\nuse Jiminny\\Exceptions\\ModelNotFoundException;\nuse Jiminny\\Models\\AutomatedReport;\nuse Jiminny\\Models\\User;\nuse Jiminny\\Services\\Kiosk\\AutomatedReports\\AutomatedReportsService;\nuse Psr\\Log\\LoggerInterface;\nuse Symfony\\Component\\HttpFoundation\\Response;\nuse Throwable;\n\nclass AskJiminnyReportsController extends Controller\n{\n public function __construct(\n private readonly AutomatedReportsService $automatedReportsService,\n private readonly LoggerInterface $logger,\n ) {\n }\n\n private function isNotOwnedByUser(AutomatedReport $report, User $user): bool\n {\n return $report->getTeamId() !== $user->getTeamId()\n || $report->getAttribute('created_by') !== $user->getId();\n }\n\n public function getFormData(Request $request, ?string $uuid = null): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;\n\n return new JsonResponse(\n $this->automatedReportsService->getAskJiminnyReportFormData($user, $report)\n );\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report form data', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch form data'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Create a new Ask Jiminny report.\n */\n public function create(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);\n\n return new JsonResponse($data);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to create Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to create report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Update an existing Ask Jiminny report.\n */\n public function update(Request $request, string $uuid): JsonResponse\n {\n \\Illuminate\\Support\\Facades\\Log::channel('custom_channel')->info(\"UPDATE\");\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (InvalidArgumentException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);\n } catch (Throwable $e) {\n $this->logger->error('Failed to update Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to update report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Toggle Ask Jiminny report status (enable/disable).\n */\n public function toggleStatus(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $data = $this->automatedReportsService->updateAskJiminnyReportStatus(\n $report,\n (bool) $request->input('enabled'),\n );\n\n return new JsonResponse($data);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to toggle Ask Jiminny report status', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to toggle report status'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * List all Ask Jiminny reports.\n */\n public function list(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $sortColumn = $request->input('sort_column', 'created_at');\n $sortDirection = $request->input('sort_direction', 'desc');\n\n $data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);\n\n return new JsonResponse($data);\n } catch (Throwable $e) {\n $this->logger->error('Failed to list Ask Jiminny reports', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch reports'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Get a single Ask Jiminny report.\n */\n public function get(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n return new JsonResponse($this->automatedReportsService->get($uuid));\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to get Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getReportsCount(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $resultsCount = $this->automatedReportsService->getReportResults($report)->count();\n\n return new JsonResponse(['count' => $resultsCount]);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to count report results', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'report_uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to count report results'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n /**\n * Delete an Ask Jiminny report.\n */\n public function delete(Request $request, string $uuid): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n if ($request->boolean('delete_generated_reports')) {\n $this->automatedReportsService->deleteReportResults($uuid);\n }\n\n $report = $this->automatedReportsService->getReport($uuid);\n\n if ($this->isNotOwnedByUser($report, $user)) {\n return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);\n }\n\n $this->automatedReportsService->delete($uuid);\n\n return new JsonResponse(null, Response::HTTP_NO_CONTENT);\n } catch (ModelNotFoundException $e) {\n return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);\n } catch (Throwable $e) {\n $this->logger->error('Failed to delete Ask Jiminny report', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n 'uuid' => $uuid,\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to delete report'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n\n public function getFilters(Request $request): JsonResponse\n {\n /** @var User $user */\n $user = $request->user();\n\n try {\n $filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);\n\n return new JsonResponse(['filters' => $filters]);\n } catch (Throwable $e) {\n $this->logger->error('Failed to fetch Ask Jiminny report filters', [\n 'error' => $e->getMessage(),\n 'user_id' => $user->getId(),\n ]);\n\n return new JsonResponse(\n ['error' => 'Failed to fetch filters'],\n Response::HTTP_INTERNAL_SERVER_ERROR\n );\n }\n }\n}","role_description":"text entry area","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":"AXTextArea","text":"[2026-04-20 09:25:26] local.INFO: UPDATE {\"correlation_id\":\"082b343f-d8cb-46e7-a1dc-c68314e3fa7f\",\"trace_id\":\"b7988fcf-12ec-4222-9859-0f479bea409f\"}","depth":4,"bounds":{"left":0.4225399,"top":0.09736632,"width":0.39394948,"height":0.8818835},"value":"[2026-04-20 09:25:26] local.INFO: UPDATE {\"correlation_id\":\"082b343f-d8cb-46e7-a1dc-c68314e3fa7f\",\"trace_id\":\"b7988fcf-12ec-4222-9859-0f479bea409f\"}","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.011968086,"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}]...
|
9097319771604449483
|
-7048904252479002041
|
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
AskJiminnyReportActivityServiceTest
Run 'AskJiminnyReportActivityServiceTest'
Debug 'AskJiminnyReportActivityServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers\API\V2;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller;
use Jiminny\Exceptions\InvalidArgumentException;
use Jiminny\Exceptions\ModelNotFoundException;
use Jiminny\Models\AutomatedReport;
use Jiminny\Models\User;
use Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsService;
use Psr\Log\LoggerInterface;
use Symfony\Component\HttpFoundation\Response;
use Throwable;
class AskJiminnyReportsController extends Controller
{
public function __construct(
private readonly AutomatedReportsService $automatedReportsService,
private readonly LoggerInterface $logger,
) {
}
private function isNotOwnedByUser(AutomatedReport $report, User $user): bool
{
return $report->getTeamId() !== $user->getTeamId()
|| $report->getAttribute('created_by') !== $user->getId();
}
public function getFormData(Request $request, ?string $uuid = null): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $uuid ? $this->automatedReportsService->getReport($uuid) : null;
return new JsonResponse(
$this->automatedReportsService->getAskJiminnyReportFormData($user, $report)
);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report form data', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch form data'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Create a new Ask Jiminny report.
*/
public function create(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$data = $this->automatedReportsService->createAskJiminnyReport($request->all(), $user);
return new JsonResponse($data);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to create Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to create report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Update an existing Ask Jiminny report.
*/
public function update(Request $request, string $uuid): JsonResponse
{
\Illuminate\Support\Facades\Log::channel('custom_channel')->info("UPDATE");
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReport($report, $request->all(), $user);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (InvalidArgumentException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_UNPROCESSABLE_ENTITY);
} catch (Throwable $e) {
$this->logger->error('Failed to update Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to update report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Toggle Ask Jiminny report status (enable/disable).
*/
public function toggleStatus(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$data = $this->automatedReportsService->updateAskJiminnyReportStatus(
$report,
(bool) $request->input('enabled'),
);
return new JsonResponse($data);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to toggle Ask Jiminny report status', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to toggle report status'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* List all Ask Jiminny reports.
*/
public function list(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$sortColumn = $request->input('sort_column', 'created_at');
$sortDirection = $request->input('sort_direction', 'desc');
$data = $this->automatedReportsService->listAskJiminnyReports($user, $sortColumn, $sortDirection);
return new JsonResponse($data);
} catch (Throwable $e) {
$this->logger->error('Failed to list Ask Jiminny reports', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch reports'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Get a single Ask Jiminny report.
*/
public function get(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
return new JsonResponse($this->automatedReportsService->get($uuid));
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to get Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to fetch report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getReportsCount(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$resultsCount = $this->automatedReportsService->getReportResults($report)->count();
return new JsonResponse(['count' => $resultsCount]);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to count report results', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'report_uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to count report results'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
/**
* Delete an Ask Jiminny report.
*/
public function delete(Request $request, string $uuid): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
if ($request->boolean('delete_generated_reports')) {
$this->automatedReportsService->deleteReportResults($uuid);
}
$report = $this->automatedReportsService->getReport($uuid);
if ($this->isNotOwnedByUser($report, $user)) {
return new JsonResponse(['error' => 'Report not found'], Response::HTTP_NOT_FOUND);
}
$this->automatedReportsService->delete($uuid);
return new JsonResponse(null, Response::HTTP_NO_CONTENT);
} catch (ModelNotFoundException $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_NOT_FOUND);
} catch (Throwable $e) {
$this->logger->error('Failed to delete Ask Jiminny report', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
'uuid' => $uuid,
]);
return new JsonResponse(
['error' => 'Failed to delete report'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
public function getFilters(Request $request): JsonResponse
{
/** @var User $user */
$user = $request->user();
try {
$filters = $this->automatedReportsService->getAskJiminnyReportFilters($user);
return new JsonResponse(['filters' => $filters]);
} catch (Throwable $e) {
$this->logger->error('Failed to fetch Ask Jiminny report filters', [
'error' => $e->getMessage(),
'user_id' => $user->getId(),
]);
return new JsonResponse(
['error' => 'Failed to fetch filters'],
Response::HTTP_INTERNAL_SERVER_ERROR
);
}
}
}
Sync Changes
Hide This Notification
Code changed:
Hide
[2026-04-20 09:25:26] local.INFO: UPDATE {"correlation_id":"082b343f-d8cb-46e7-a1dc-c68314e3fa7f","trace_id":"b7988fcf-12ec-4222-9859-0f479bea409f"}
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
54948
|