|
71567
|
2568
|
19
|
2026-05-26T06:55:41.292336+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778541292_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
3232083423523542467
|
-8631779519303040639
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Tue 26 May 9:55:40Nikolay Ivanov (Presenting, annotating)Galya Dimitrova0 -mw@ Foe you© Recert$ Sturred21 АрряQ SpacesJmimy 101a() Service-Desk( Jmimy NNew)1 Puudoem TeamProcessing TeamC SE KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ Operationa23 Contuend2z TeamsNikolay IvanovAUIM ISSIE GOO0SNikolay NikolovPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL Reports0000218Epic~Type~keaby lo be Merged Dl wox tenRATKRAVAneliya AngelovaSteliyan GeorgievLukas KovalikB UstCo0 av24FormsC Components% Development ½ CodeO Securty© ReleasesA Deployments8 Archived work itemsE DocяEOo0eFONOFIANO8 Shortcutsv Sprint (21 work tema)pgrade Ll lbraries • Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bier ooliIn DerД -27-20033ahnaeetodeteIn Devа л2oиsn "=®MCP > Enatie uners to get a ist oforanenguer oruanCode Review20 n ***= OOA 1MCP > Enable the Al to know00s 200000 W0In GAUat"0040WND ASURCAACEKedoy lo were₴ л-л0n |18Д •*=AJ Panorama for Call Scoring in ODСитомАНОдурСокеаDeployedВ л2ом1|OS A ..= tцньозрок оранки фиNcouticorneCLATFORM STARILETOC Jr-2072s1S •= 1rompts is deleted but is uned in AJleportAJREFORTSУeрioтedД л-20еге25 &**=Nodty the uner if a SS la deleted9:55 AM | Daily - Platform© 7:49...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71566
|
2569
|
8
|
2026-05-26T06:55:39.218379+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778539218_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions...
|
[{"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},"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"bounds":{"left":0.064494684,"top":0.019952115,"width":0.040226065,"height":0.025538707},"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.8374335,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"bounds":{"left":0.85272604,"top":0.019952115,"width":0.062832445,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"bounds":{"left":0.9155585,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"bounds":{"left":0.9268617,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.9381649,"top":0.019952115,"width":0.011303191,"height":0.025538707},"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
552474100830530088
|
1744514022158616001
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
=PhpStormViewFV faVsco.|s ~%o macteyCodeCarevelC EmailActivityServiceTest.php8 InboySarviceTest.php© TextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallA!> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.pha© TeamOwnerServiceTest.phpCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils› @ Validatione vo€EnuminArravTrait.phoHeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê editorcontioE.enuE.env.circlacilcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallE .env.otheronu nroductiarE .env.production-euFonuasE onu asooksCTaytRalny Sarvien nor=custom.loglaraveio"Sf- uminnylocalhost& HS_Jocal (jiminny@localhost# console peoo1xA console (EUnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:6USZaREBEB 8AccentResiectluse sminny conoonent queue constants,use Jiminny Models\TextRelayuse sminny Services Hae mextrelavseruicesuse PHPunft\Franework Attributes Coversclass:luse PiPun Enanenork ,ttributes, bataprowidenuse Tests Testrase,use raalact onhiaee.luea Mockeny:Trownnenlneeldmyt?auSsnusea..eneeit—403= A0=400—696=697[PHONE]01702-70378470,1=78=707=708=70924 %onee Tayseh Sonusealnet aytande hetepublic static function environmentProvider(): array— 715_713return'catch-all-eu', 'catch-all-eu?txt.jininny.com')"us environment' => ['us', 'catch-all'.'[EMAIL]'].'other environment defaults to us' = ('other'. 'catch-all'. *[EMAIL]']718'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j729'us environnent with.olus tag' a f'us'.S&S&AAASA&S58438protected functsion setuoo: voidparentassetiod,protected functsion tearDomn@= vosal-7291—731Nockeny: closeowtnwtnonausidonanus.nansont.Praus.don"publio function testIsForCurrentEn iots eentiithya chepe igota oxeetaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 4EROM text nelaveWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c88028a2c656*) :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericWHERE a.type LIKE "saskAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane, u.softohone-numbenORDER BY sns count DESC:select * fron teans where id = 1;SELECTCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,t.ouner_id FROM social_accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tnc->i: on t.id = u.tean_idWHERE U.tean_id = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities HHERE UUEd_tO_bIn(8824fffb-2df7-4817-91f4-d9f896850248') = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 1d = 1117;select * fron users where id = 38249.select * fron playbooks where id = $473;select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * fron crn field values where crn field id = 659242;SELECT * FROM con Sield data 4d# JOIN crn_fields f ON fd.crn_field_id = f.id# JOTN actiivities a ON {d,activity 1d = a,idWHERE activity_id : 79933459# AND f.crn_provider_id = 'hs_activity_type';select * fron text relavs nhere created at > 12026-85-01*9select * fron activities where user_id IN (7160, 18608) and created_at > '2826-85-22"select * fron users where tean_id = 1;D00%LTue 26 May 9:55:38+0.ORendheNy LoGGinecetme check a were in a Docker environmencor tene is avariaoie trouen Dockel• docker ps I grep php00/050838709*. 0-0.6-p4p-93485/р, (7) :4ek5 3443/tср° 1Ineeo to run tne tests trough the Docker comtalner, Let me execute tiem usine wocketexec docker lamp 1 php artisan test tests/Unit/Services/Mafl/TextRelayServiceTest.php -Phplnuus.55 ou Sebastotan Beronann and conteloutors.Unknown option "=-verbose'emenneess winnoie veroose tat• docker exec docker lamp 1 php artisan test tests/Unft/Services/Mafl/TextRelayServiceTest.phsNo code coverage driver availableGATILTests\Unit\Services\Mail\TextRelayServiceTestETHEEoinsheissueieee reallind oecauusth Goodle Serice cot tctonessane cssootsnexisalemecheck what the correct class name should be by looking at the actual Gmail service usageoinshs the conce Cussis roodcorr Histor ersdeulemeineedoueinghe cottecclass namestor wanle eoltno eytre huserus celst,ondIoaad to fiy both occurrancac. llet ma uica reolaca all to fx all instaocns at onoaerwhenvsemcaicstoheNow let me run the tests again to see itthey passO docker exec docker lamp 1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.phpAck anything (XoL)achotAcceot allKtwodtur TasmeDeWhieht4 spag...
|
71563
|
NULL
|
NULL
|
NULL
|
|
71565
|
2568
|
18
|
2026-05-26T06:55:39.100950+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778539100_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-2705473364540108346
|
-7195096036619861568
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0100% <2Tue 26 May 9:55:38Nikolay Ivanov (Presenting, annotating)Galya Dimitrova0 mw@ Foe you© Recere$ strred21 АрряQ SpacesJmimy 101a(9 Service-DeskSmimy Niew)1 E Puudoem TeamProcessing TeamC SE KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ Operationa23 Contuend2z TeamsNikolay IvanovAUIM ISSIE GOO0SNikolay NikolovPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL Reports0000218Epic~Type~v keaby lo be Merged Dl wox tenRASTKRAVAneliya AngelovaSteliyan GeorgievLukas Kovalik# Uist|Cooav24FormsC Components% Development ½ CodeO Securty© ReleasesA Deployments8 Archived work itemsE DocяEOo0eFONOFIANO8 Shortcutsv Sprint (21 work hema)porade Ll lbraries • Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bir ooliIn DerД 27-20033ahnaeettodeteIn Devа л2oиsn "=®MCP > Enatie users to get a ist oforasenguer oranCode Review20 n ***= OOA 1MCP > Enable the Al to know00s 200000 W0In GAWND ASURCAACEKedoy lo were₴ л-лоn |18Д ..=AJ Panorama for Call Scoring in ODСитомАНодурсокеаDeployedВ л2ом1|OS A ..= tцньозрок орание фиNccoutnicoreCLATFORM STARILETOC Jr-2072srompts is deleted but is uned in AJleportAJREPORTSУeрoтedД л-20еге25 Д **=Nodty the uner if a SS la deleted9:55 AM | Daily - Platform• 7:47...
|
71564
|
NULL
|
NULL
|
NULL
|
|
71564
|
2568
|
17
|
2026-05-26T06:55:34.040203+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778534040_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"32","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6544645889858267122
|
-8199837459166412352
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0100% <2Tue 26 May 9:55:33Nikolay Ivanov (Presenting, annotating)Galya Dimitrova0 mw@ Foe you© Recert$ Sturred21 АрряQ SpacesJmimy 101a() Service-Desk( Jmimy NNew)1 E Puudoem TeamProcessing TeamC SE KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ Operationa23 Contuend2z TeamsNikolay IvanovAUIM ISSIE GOO0SNikolay NikolovPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL Reports0000218Epic~Type~keaby lo be Merged Dl wox tenRATKRAVAneliya AngelovaSteliyan GeorgievLukas Kovalik# Uist|Co0 av24v Sprint (21 work tema)pgrade Ll lbraries • Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bier ooliIn DerД -27-20033ahnaeetodeteIn Devа л2oиsn "=®MCP > Enatie uners to get a ist oforanenguer oruanCode Review20 n ***= OFormsC Components% Development ½ CodeO Securty© ReleasesA Deployments8 Archived work itemsE DocяEOo0eFONOFIANOOA 1MCP > Enable the Al to know00s 200000 W0In OAUat"0040WND ASURCAACEKedoy lo were₴ л-л0n |18Д •*=AJ Panorama for Call Scoring in ODСитомАНОдурСокеаDeployedВ л2ом1|OS A ..= tцньозрок оранки фиNcouticorneCLATFORM STARILETOC Jr-2072s1S •= 1rompts is deleted but is uned in AJleportAJREPORTSУeрioтedД л-20еге25 &**=Nodty the uner if a SS la deleted9:55 AM | Daily - Platform• 7:42...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71563
|
2569
|
7
|
2026-05-26T06:55:21.405644+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778521405_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
=PhpStormViewFV faVsco.|s ~%o macteyCodeCarevelC E =PhpStormViewFV faVsco.|s ~%o macteyCodeCarevelC EmailActivityServiceTest.php8 InboySarviceTest.php© TextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallA!> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.phaeimamemin deaheaiaet nonCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils› @ Validatione vo€EnuminArravTrait.pho* HeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê editorcontioE.enuE.env.circlacilcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallE .env.otheronu nroductiarE .env.production-euFonuasE onu asOOl-CTaytRalny Sarvien nor=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhost& console (PROD) XA console (EUnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:6USZaREBEB 8AccentResiectluse sminny conoonent queue constants,use Jiminny Models\TextRelayuse sminny Services Hae mextrelavseruicesuse PHPunft\Franework Attributes Coversclass:luse PiPun Enanenork ,ttributes, bataprowiden—403= A0=400—696=697[PHONE]01702-703784use Tests Testrase,use raalact onhiaee.luea Mockeny:Trownnenlneeldmyt?auSsnusea..eneeit1=78=707=708=70924 %onee Tayseh Sonusealnet aytande hetepublic static function environmentProvider(): array— 715_713return'catch-all-eu', 'catch-all-eu?txt.jininny.com']"us environment' => ['us', 'catch-all'.'[EMAIL]'].'other environment defaults to us' = ('other'. 'catch-all'. *[EMAIL]']718'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j729'us environnent with.olus tag' a f'us'.6&S&AAGSA856588каprotected functsion setuoo: voidparentassetiod,protected functsion tearDomn@= vosal-7291—731Nockeny: closeowtnwtnonausidonanus.nansont.Praus.don"publio function testIsForCurrentEn iots eentiithya chepe igota oxeetaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 4EROM text nelaveWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c88028a2c656*) :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericWHERE a.type LIKE "saskAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane, u.softohone-numbenORDER BY sns count DESC:select * fron teans where id = 1;SELECTCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,t.ouner_id FROM social_accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tnc->i: on t.id = u.tean_idWHERE U.tean_id = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities HHERE UUEd_tO_bIn(8824fffb-2df7-4817-91f4-d9f896850248') = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 1d = 1117;select * fron users where id = 38249.select * fron playbooks where id = $473;select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * fron crn field values where crn field id = 659242;SELECT * FROM con Sield data 4d# JOIN crn_fields f ON fd.crn_field_id = f.id#JOTN actiivities a ON {d,activity 1d = a,idWHERE activity_id : 79933459# AND f.crn_provider_id = 'hs_activity_type';select * fron text relavs nhere created at > 12026-85-01*9select * fron activities where user_id IN (7160, 18608) and created_at > '2826-85-22"select * fron users where tean_id = 1;D00%LTue 26 May 9:55:20+0.OTeneteihM Looginecetme check a were in a Docker environmencor tene is avariaoie trouen Dockel• docker ps I grep php00/050838709*. 0-0.6-p4p-93485/р, (7) :4ek5 3443/tср° 1Ineeo to run tne tests trough the Docker comtalner, Let me execute tiem usine wocketexec docker lamp 1 php artisan test tests/Unit/Services/Mafl/TextRelayServiceTest.php -Phplnuus.55 ou Sebastotan Beronann and conteloutors.Unknown option "=-verbose'emenneess winnoie veroose tat• docker exec docker lamp 1 php artisan test tests/Unft/Services/Mafl/TextRelayServiceTest.phsNo code coverage driver availableGATILTests\Unit\Services\Mail\TextRelayServiceTestETHEEoinsheissueieee reallind oecauusth Goodle Serice cot tctonessane cssootsnexisalemecheck what the correct class name should be by looking at the actual Gmail service usageoinshs the conce Cussis roodcorr Histor ersdeulemeineedoueinghe cottecclass namestor wanle eoltno eytre huserus celst,ondIoaad to fiy both occurrancac. llet ma uica reolaca all to fx all instaocns at onoaerwhenvsemcaicstoheNow let me run the tests again to see if they passO docker exec docker lamp 1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.phpAcceot allAck anything (XOL)achot• OKtwodtur TasmeDeWhieht4 spag...
|
NULL
|
-3998496659098252891
|
NULL
|
click
|
ocr
|
NULL
|
=PhpStormViewFV faVsco.|s ~%o macteyCodeCarevelC E =PhpStormViewFV faVsco.|s ~%o macteyCodeCarevelC EmailActivityServiceTest.php8 InboySarviceTest.php© TextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallA!> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.phaeimamemin deaheaiaet nonCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils› @ Validatione vo€EnuminArravTrait.pho* HeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê editorcontioE.enuE.env.circlacilcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallE .env.otheronu nroductiarE .env.production-euFonuasE onu asOOl-CTaytRalny Sarvien nor=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhost& console (PROD) XA console (EUnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:6USZaREBEB 8AccentResiectluse sminny conoonent queue constants,use Jiminny Models\TextRelayuse sminny Services Hae mextrelavseruicesuse PHPunft\Franework Attributes Coversclass:luse PiPun Enanenork ,ttributes, bataprowiden—403= A0=400—696=697[PHONE]01702-703784use Tests Testrase,use raalact onhiaee.luea Mockeny:Trownnenlneeldmyt?auSsnusea..eneeit1=78=707=708=70924 %onee Tayseh Sonusealnet aytande hetepublic static function environmentProvider(): array— 715_713return'catch-all-eu', 'catch-all-eu?txt.jininny.com']"us environment' => ['us', 'catch-all'.'[EMAIL]'].'other environment defaults to us' = ('other'. 'catch-all'. *[EMAIL]']718'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j729'us environnent with.olus tag' a f'us'.6&S&AAGSA856588каprotected functsion setuoo: voidparentassetiod,protected functsion tearDomn@= vosal-7291—731Nockeny: closeowtnwtnonausidonanus.nansont.Praus.don"publio function testIsForCurrentEn iots eentiithya chepe igota oxeetaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 4EROM text nelaveWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c88028a2c656*) :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericWHERE a.type LIKE "saskAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane, u.softohone-numbenORDER BY sns count DESC:select * fron teans where id = 1;SELECTCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,t.ouner_id FROM social_accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tnc->i: on t.id = u.tean_idWHERE U.tean_id = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities HHERE UUEd_tO_bIn(8824fffb-2df7-4817-91f4-d9f896850248') = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 1d = 1117;select * fron users where id = 38249.select * fron playbooks where id = $473;select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * fron crn field values where crn field id = 659242;SELECT * FROM con Sield data 4d# JOIN crn_fields f ON fd.crn_field_id = f.id#JOTN actiivities a ON {d,activity 1d = a,idWHERE activity_id : 79933459# AND f.crn_provider_id = 'hs_activity_type';select * fron text relavs nhere created at > 12026-85-01*9select * fron activities where user_id IN (7160, 18608) and created_at > '2826-85-22"select * fron users where tean_id = 1;D00%LTue 26 May 9:55:20+0.OTeneteihM Looginecetme check a were in a Docker environmencor tene is avariaoie trouen Dockel• docker ps I grep php00/050838709*. 0-0.6-p4p-93485/р, (7) :4ek5 3443/tср° 1Ineeo to run tne tests trough the Docker comtalner, Let me execute tiem usine wocketexec docker lamp 1 php artisan test tests/Unit/Services/Mafl/TextRelayServiceTest.php -Phplnuus.55 ou Sebastotan Beronann and conteloutors.Unknown option "=-verbose'emenneess winnoie veroose tat• docker exec docker lamp 1 php artisan test tests/Unft/Services/Mafl/TextRelayServiceTest.phsNo code coverage driver availableGATILTests\Unit\Services\Mail\TextRelayServiceTestETHEEoinsheissueieee reallind oecauusth Goodle Serice cot tctonessane cssootsnexisalemecheck what the correct class name should be by looking at the actual Gmail service usageoinshs the conce Cussis roodcorr Histor ersdeulemeineedoueinghe cottecclass namestor wanle eoltno eytre huserus celst,ondIoaad to fiy both occurrancac. llet ma uica reolaca all to fx all instaocns at onoaerwhenvsemcaicstoheNow let me run the tests again to see if they passO docker exec docker lamp 1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.phpAcceot allAck anything (XOL)achot• OKtwodtur TasmeDeWhieht4 spag...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71562
|
2568
|
16
|
2026-05-26T06:55:12.791646+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778512791_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
45
1
41
66
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993
SELECT * FROM users WHERE id = 25061;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 994;
SELECT * FROM crm_profiles WHERE user_id = 25061;
select * from crm_configurations where id = 834;
SELECT * FROM teams WHERE id = 882;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;
SELECT * FROM contacts where crm_configuration_id = 834;
SELECT * FROM opportunities WHERE team_id = 933
# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');
AND id IN (8482561,18352941,19042734,19232139,19445140,19472541);
SELECT * FROM opportunity_contacts
WHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 485; #
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
select crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id
where crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')
# and l.converted_at IS NOT NULL
;
# [PASSWORD_DOTS]
SELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')
and opportunity_id IS NULL
order by id desc;
SELECT * FROM teams WHERE id = 604; # 598
SELECT * FROM activities WHERE id = 74410828; # [EMAIL]
SELECT * FROM accounts WHERE id = 20068382;
SELECT * FROM accounts WHERE id = 35186038;
SELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 559 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;
select * from sidekick_settings where team_id = 781;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100
SELECT * FROM crm_layouts WHERE crm_configuration_id = 711;
SELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL
and is_internal = 0 and status = 'completed'
order by id desc;
SELECT * FROM crm_layout_entities
WHERE crm_layout_id IN (2352, 2353);
;
SELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 556 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;
SELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;
select * from contacts
where crm_configuration_id = 530
and crm_provider_id = 872252;
select * from activities where crm_configuration_id = 530
and user_id = 14343 and type like '%softphone%'
and created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);
SELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t
JOIN crm_configurations c ON t.id = c.team_id
WHERE t.status = 'active';
SELECT * FROM teams where id = 1091;
SELECT * FROM crm_configurations where team_id = 1091;
SELECT * FROM activity_providers where team_id = 1091;
SELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT * FROM teams WHERE name LIKE '%Leadventure%';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1091 and sa.provider = 'salesforce';
SELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812
SELECT * FROM teams where id = 862;
SELECT * FROM crm_configurations where team_id = 862;
SELECT * FROM activity_providers where team_id = 862;
SELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT t.id, crm.id, crm.provider, ap.* FROM teams t
join crm_configurations crm on t.id = crm.team_id
join activity_providers ap on t.id = ap.team_id
where t.status = 'active' and ap.is_enabled = 1
and crm.provider = 'hubspot'
and ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',
'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');
SELECT * FROM teams where id = 1068;
SELECT * FROM crm_configurations where team_id = 1068;
SELECT * FROM activity_providers where team_id = 1068;
SELECT * FROM activities a
where crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')
and a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'
)
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by a.id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1068 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262
SELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
select * from crm_layouts where crm_configuration_id = 834;
select * from crm_layout_entities where crm_layout_id = 2780;
select * from crm_fields where id IN (321153,321192,321193,321194);
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1057 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8
SELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20
SELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10
SELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #
SELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;
select * from users where team_id = 51; # 7783
SELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130
select * from activity_searches where user_id = 7783;
select * from activity_search_filters where activity_search_id IN (32291, 32292);
SELECT asf.activity_search_id, asf.id, asf.value
FROM activity_search_filters asf
WHERE asf.filter = 'group_id'
AND asf.value IN (
SELECT CONCAT(
HEX(SUBSTR(uuid, 5, 4)), '-',
HEX(SUBSTR(uuid, 3, 2)), '-',
HEX(SUBSTR(uuid, 1, 2)), '-',
HEX(SUBSTR(uuid, 9, 2)), '-',
HEX(SUBSTR(uuid, 11))
)
FROM groups
WHERE deleted_at IS NOT NULL
);
SELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where provider = 'hubspot';
SELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133
SELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null
# [PASSWORD_DOTS]
select * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';
select
cp.*
# DISTINCT t.id
# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields
FROM crm_profiles cp
JOIN crm_configurations crm on crm.id = cp.crm_configuration_id
JOIN users u on u.id = cp.user_id
JOIN teams t ON t.id = crm.team_id
WHERE crm.provider = 'salesforce' and t.status = 'active'
and cp.archived_at IS NULL and u.deleted_at IS NULL
and t.id NOT IN (1093)
and t.id = 2
and cp.contact_fields IS NULL;
# and c.crm_provider_id = '003Uu00000ojD4NIAU';
SELECT * FROM users WHERE id = 26484;
SELECT * FROM crm_profiles WHERE user_id = 26484;
SELECT * FROM social_accounts WHERE sociable_id = 26484;
SELECT * FROM crm_configurations where provider = 'salesforce';
select * from users where id IN (10022, 10403);
select * from users where team_id IN (526);
select * from teams where id IN (526, 532);
select * from crm_configurations where id IN (500, 516);
select * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);
select * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 526 and sa.provider = 'salesforce';
select * from team_settings where team_id IN (526, 532);
select * from users where id IN (22824);
select * from crm_profiles where crm_configuration_id IN (1026);
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1093 and sa.provider = 'salesforce';
select * from teams where id = 1099;
select * from users where id = 29643
select * from activity_processing_states;
SELECT * FROM teams where name LIKE '%Fare%'; # 233
SELECT * FROM opportunities where crm_configuration_id = 215
# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'
;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1088 and sa.provider = 'hubspot';
SELECT * FROM teams order by updated_at DESC
SELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account
select * from crm_configurations where provider = 'pipedrive';
select * from teams where id = 957;
select * from crm_configurations where id = 957;
SELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743
SELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;
select * from users where team_id = 1; # 26726 - Gabriela Dureva
SELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific
select * from activities where user_id = 26726 order by id desc;
select * from contacts where crm_configuration_id = 1
and email IN ('[EMAIL]', '[EMAIL]'); # 2094416, 2093620
SELECT * FROM contacts WHERE id = 6284931;
SELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id
WHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;
select * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);
select * from crm_configurations where id = 1;
43801692-1aeb-32ce-acba-5b80a479701a
44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b
405975c0-b3d0-7aaa-821f-09d59cae6dd1
4caf848d-4bed-2299-b248-7788d41f9fca
49bedc3f-f196-eef3-89c3-dea6a3b4aa63
43420989-a09d-b8f8-9806-c8bbf7a02aac
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
SELECT * FROM activities WHERE id = 75461988;
SELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;
select * from contacts where id = 17900517;
select * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id
where crm.provider != 'salesforce';
select * from users where id = 21047;
SELECT * FROM crm_configurations WHERE id = 892;
SELECT * FROM teams WHERE id = 942;
select * from opportunities where team_id = 942 order by updated_at desc;
select * from contacts where team_id = 942 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 942 and sa.provider = 'hubspot';
SELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430
SELECT * FROM crm_configurations WHERE id = 1;
SELECT * FROM teams WHERE crm_id = 1;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1
SELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430
select * from teams where id = 852;
select * from groups where id = 2286;
select * from sidekick_settings where team_id = 852;
select * from default_activity_types where team_id = 852;
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1 AND u.deleted_at IS NULL
AND u.crm_required = 1
AND u.team_id = 1
ORDER BY u.team_id;
SELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (
18481
);
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1
AND u.deleted_at IS NULL
AND u.crm_required = 1
# AND u.team_id = 1
AND p.id IS NULL -- Move this condition to WHERE clause
ORDER BY u.team_id;
SELECT * FROM opportunities WHERE id = 20002609;
select * from teams where id = 1122; # Velatir, 29953 - [EMAIL]
select * from crm_configurations where id = 1060;
select * from crm_layouts where crm_configuration_id = 1060;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1122 and sa.provider = 'hubspot';
select * from opportunities where team_id = 1122 order by updated_at desc;
select * from crm_field_data where object_type = 'contact';
SELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 248 and sa.provider = 'salesforce';
SELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS
SELECT * FROM users where id = 24115;
SELECT * FROM accounts where id = 4002896;
SELECT * FROM teams WHERE name LIKE '%adswerve%';
SELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN ("0069N000003GIQ9QAO","0061r000019yGP9AAM","0066900001S2KWlAAN","0066900001TDpj2AAD","0066900001b8uEwAAI","0069N000001rQi0QAE","006QF00000KD40mYAD","006QF00000LzpRJYAZ","0069N000002uomtQAA","0069N000002xlMLQAY","0066900001NV6ubAAD","0061r00001HJp45AAD","006QF00000uTlUoYAK","006QF00000v0bZqYAI");
SELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203
SELECT u.id, u.email, ac.name, a.* FROM activities a
JOIN users u ON a.user_id = u.id
JOIN accounts ac ON a.account_id = ac.id
WHERE
uuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or
uuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or
uuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;
select * from users where id = 5825;
SELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;
select * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;
19594, 862
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 862 and sa.provider = 'salesforce';
select * from automated_reports where id = 36;
select ar.frequency, r.*, ar.* from automated_report_results r
join automated_reports ar on r.report_id = ar.id
where ar.frequency != 'one_off';
select s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;
select * from nudges n where n.activity_search_id
select * from teams where created_at > '2026-03-09';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;
select * from users where team_id = 1 and name like '%Lukas%'; # 7160
SELECT * FROM teams WHERE id = 575;
select * from opportunities where team_id = 575;
SELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,
select * from opportunities where team_id = 1126;
SELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,
select * from opportunities where team_id = 1125;
select * from contacts c
where c.team_id = 882;
SELECT * FROM activities WHERE id = 76822967;
SELECT * FROM crm_profiles WHERE user_id = 15440;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 555;
SELECT * FROM crm_configurations WHERE id = 555;
SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 581 and sa.provider = 'salesforce';
SELECT * FROM automated_report_results order by id desc;
select * from features;
select * from team_features where feature_id = 40;
select * from teams where id = 556;
select * from automated_reports;
where id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , ["pdf","podcast"]
SELECT ...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"32","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"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},"on_screen":false,"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\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\n }\n\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\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,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"45","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"1","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"41","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXStaticText","text":"66","depth":4,"on_screen":true,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993\nSELECT * FROM users WHERE id = 25061;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 994;\nSELECT * FROM crm_profiles WHERE user_id = 25061;\n\nselect * from crm_configurations where id = 834;\nSELECT * FROM teams WHERE id = 882;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;\n\nSELECT * FROM contacts where crm_configuration_id = 834;\nSELECT * FROM opportunities WHERE team_id = 933\n# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');\nAND id IN (8482561,18352941,19042734,19232139,19445140,19472541);\nSELECT * FROM opportunity_contacts\nWHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; #\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nselect crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id\nwhere crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')\n# and l.converted_at IS NOT NULL\n;\n\n# ********************************************************************\nSELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')\nand opportunity_id IS NULL\norder by id desc;\n\nSELECT * FROM teams WHERE id = 604; # 598\nSELECT * FROM activities WHERE id = 74410828; # chelseaw@allvoices.co\nSELECT * FROM accounts WHERE id = 20068382;\nSELECT * FROM accounts WHERE id = 35186038;\n\nSELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 559 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;\nselect * from sidekick_settings where team_id = 781;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 711;\nSELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL\nand is_internal = 0 and status = 'completed'\norder by id desc;\n\nSELECT * FROM crm_layout_entities\nWHERE crm_layout_id IN (2352, 2353);\n;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;\nSELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;\nselect * from contacts\nwhere crm_configuration_id = 530\nand crm_provider_id = 872252;\n\nselect * from activities where crm_configuration_id = 530\nand user_id = 14343 and type like '%softphone%'\nand created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);\n\n\nSELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t\nJOIN crm_configurations c ON t.id = c.team_id\nWHERE t.status = 'active';\n\nSELECT * FROM teams where id = 1091;\nSELECT * FROM crm_configurations where team_id = 1091;\nSELECT * FROM activity_providers where team_id = 1091;\nSELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT * FROM teams WHERE name LIKE '%Leadventure%';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1091 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812\nSELECT * FROM teams where id = 862;\nSELECT * FROM crm_configurations where team_id = 862;\nSELECT * FROM activity_providers where team_id = 862;\nSELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT t.id, crm.id, crm.provider, ap.* FROM teams t\njoin crm_configurations crm on t.id = crm.team_id\njoin activity_providers ap on t.id = ap.team_id\nwhere t.status = 'active' and ap.is_enabled = 1\nand crm.provider = 'hubspot'\nand ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',\n 'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');\n\nSELECT * FROM teams where id = 1068;\nSELECT * FROM crm_configurations where team_id = 1068;\nSELECT * FROM activity_providers where team_id = 1068;\n\nSELECT * FROM activities a\nwhere crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')\nand a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'\n )\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by a.id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1068 and sa.provider = 'hubspot';\n\n# ********************************************************************\n# ********************************************************************\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262\nSELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\nselect * from crm_layouts where crm_configuration_id = 834;\nselect * from crm_layout_entities where crm_layout_id = 2780;\nselect * from crm_fields where id IN (321153,321192,321193,321194);\n\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1057 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8\n\nSELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20\n\nSELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10\n\nSELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #\n\nSELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;\nselect * from users where team_id = 51; # 7783\nSELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130\nselect * from activity_searches where user_id = 7783;\nselect * from activity_search_filters where activity_search_id IN (32291, 32292);\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th\n# ********************************************************************\nSELECT * FROM crm_configurations where provider = 'hubspot';\nSELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133\nSELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null\n# ********************************************************************\n\nselect * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';\nselect\n cp.*\n# DISTINCT t.id\n# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields\nFROM crm_profiles cp\nJOIN crm_configurations crm on crm.id = cp.crm_configuration_id\nJOIN users u on u.id = cp.user_id\nJOIN teams t ON t.id = crm.team_id\nWHERE crm.provider = 'salesforce' and t.status = 'active'\n and cp.archived_at IS NULL and u.deleted_at IS NULL\n and t.id NOT IN (1093)\n and t.id = 2\n and cp.contact_fields IS NULL;\n# and c.crm_provider_id = '003Uu00000ojD4NIAU';\n\nSELECT * FROM users WHERE id = 26484;\nSELECT * FROM crm_profiles WHERE user_id = 26484;\nSELECT * FROM social_accounts WHERE sociable_id = 26484;\nSELECT * FROM crm_configurations where provider = 'salesforce';\nselect * from users where id IN (10022, 10403);\nselect * from users where team_id IN (526);\nselect * from teams where id IN (526, 532);\nselect * from crm_configurations where id IN (500, 516);\nselect * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);\nselect * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 526 and sa.provider = 'salesforce';\nselect * from team_settings where team_id IN (526, 532);\n\nselect * from users where id IN (22824);\nselect * from crm_profiles where crm_configuration_id IN (1026);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1093 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1099;\nselect * from users where id = 29643\n\nselect * from activity_processing_states;\n\nSELECT * FROM teams where name LIKE '%Fare%'; # 233\nSELECT * FROM opportunities where crm_configuration_id = 215\n# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'\n;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1088 and sa.provider = 'hubspot';\n\nSELECT * FROM teams order by updated_at DESC\nSELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account\n\nselect * from crm_configurations where provider = 'pipedrive';\n\nselect * from teams where id = 957;\nselect * from crm_configurations where id = 957;\n\nSELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743\nSELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;\n\nselect * from users where team_id = 1; # 26726 - Gabriela Dureva\nSELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific\nselect * from activities where user_id = 26726 order by id desc;\nselect * from contacts where crm_configuration_id = 1\nand email IN ('charlotte.ward@prolific.com', 'frankie.bryant@prolific.com'); # 2094416, 2093620\nSELECT * FROM contacts WHERE id = 6284931;\n\nSELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id\nWHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;\n\nselect * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);\nselect * from crm_configurations where id = 1;\n\n43801692-1aeb-32ce-acba-5b80a479701a\n44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b\n405975c0-b3d0-7aaa-821f-09d59cae6dd1\n4caf848d-4bed-2299-b248-7788d41f9fca\n49bedc3f-f196-eef3-89c3-dea6a3b4aa63\n43420989-a09d-b8f8-9806-c8bbf7a02aac\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nSELECT * FROM activities WHERE id = 75461988;\n\nSELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;\n\nselect * from contacts where id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nselect * from users where id = 21047;\nSELECT * FROM crm_configurations WHERE id = 892;\nSELECT * FROM teams WHERE id = 942;\nselect * from opportunities where team_id = 942 order by updated_at desc;\nselect * from contacts where team_id = 942 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 942 and sa.provider = 'hubspot';\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430\nSELECT * FROM crm_configurations WHERE id = 1;\nSELECT * FROM teams WHERE crm_id = 1;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1\nSELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430\n\nselect * from teams where id = 852;\nselect * from groups where id = 2286;\nselect * from sidekick_settings where team_id = 852;\nselect * from default_activity_types where team_id = 852;\n\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1 AND u.deleted_at IS NULL\nAND u.crm_required = 1\nAND u.team_id = 1\nORDER BY u.team_id;\n\nSELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (\n18481\n );\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1\n AND u.deleted_at IS NULL\n AND u.crm_required = 1\n# AND u.team_id = 1\n AND p.id IS NULL -- Move this condition to WHERE clause\nORDER BY u.team_id;\n\nSELECT * FROM opportunities WHERE id = 20002609;\nselect * from teams where id = 1122; # Velatir, 29953 - christian@velatir.com\nselect * from crm_configurations where id = 1060;\nselect * from crm_layouts where crm_configuration_id = 1060;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1122 and sa.provider = 'hubspot';\nselect * from opportunities where team_id = 1122 order by updated_at desc;\n\nselect * from crm_field_data where object_type = 'contact';\n\nSELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 248 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS\nSELECT * FROM users where id = 24115;\nSELECT * FROM accounts where id = 4002896;\nSELECT * FROM teams WHERE name LIKE '%adswerve%';\nSELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN (\"0069N000003GIQ9QAO\",\"0061r000019yGP9AAM\",\"0066900001S2KWlAAN\",\"0066900001TDpj2AAD\",\"0066900001b8uEwAAI\",\"0069N000001rQi0QAE\",\"006QF00000KD40mYAD\",\"006QF00000LzpRJYAZ\",\"0069N000002uomtQAA\",\"0069N000002xlMLQAY\",\"0066900001NV6ubAAD\",\"0061r00001HJp45AAD\",\"006QF00000uTlUoYAK\",\"006QF00000v0bZqYAI\");\nSELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203\n\nSELECT u.id, u.email, ac.name, a.* FROM activities a\nJOIN users u ON a.user_id = u.id\nJOIN accounts ac ON a.account_id = ac.id\nWHERE\nuuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or\nuuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or\nuuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;\n\nselect * from users where id = 5825;\nSELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;\n\nselect * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;\n19594, 862\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 862 and sa.provider = 'salesforce';\n\nselect * from automated_reports where id = 36;\nselect ar.frequency, r.*, ar.* from automated_report_results r\njoin automated_reports ar on r.report_id = ar.id\nwhere ar.frequency != 'one_off';\n\nselect s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;\nselect * from nudges n where n.activity_search_id\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;\n\nselect * from users where team_id = 1 and name like '%Lukas%'; # 7160\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\nSELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,\nselect * from opportunities where team_id = 1126;\nSELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,\nselect * from opportunities where team_id = 1125;\nselect * from contacts c\nwhere c.team_id = 882;\n\nSELECT * FROM activities WHERE id = 76822967;\nSELECT * FROM crm_profiles WHERE user_id = 15440;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 555;\nSELECT * FROM crm_configurations WHERE id = 555;\nSELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 581 and sa.provider = 'salesforce';\n\nSELECT * FROM automated_report_results order by id desc;\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556;\n\nselect * from automated_reports;\nwhere id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , [\"pdf\",\"podcast\"]\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\nselect * from automated_report_results order by id desc;\nSELECT * FROM automated_report_results WHERE id = 1919;\n\nselect * from automated_report_results WHERE report_id = 54;\n\nselect * from opportunities where id = 7594349;\n\nSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - jiminnyintegration@lesmills.com\nselect * from playbooks where team_id = 711; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 5515;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 692;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 711 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles cp JOIN users u on u.id = cp.user_id WHERE u.team_id = 711;\n\nselect * from leads;\n\nselect * from calendars;\n\nSELECT\n t.id AS team_id,\n t.name,\n LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1)) AS calendar_domain\nFROM teams t\nJOIN users u ON u.team_id = t.id\nJOIN calendars c ON c.user_id = u.id AND c.status = 'active' AND c.calendar_provider_id LIKE '%@%'\nLEFT JOIN team_domains td\n ON td.team_id = t.id\n AND td.deleted_at IS NULL\n AND td.domain = LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1))\nGROUP BY t.id, t.name, calendar_domain\nORDER BY t.name, calendar_domain;\n\nselect * from users u join calendars c on c.user_id = u.id\nwhere u.team_id = 882;\n\n\nselect * from activities where id = 74049485; # team 563 crm 537\nselect * from activities where id = 73272382; # team 563 crm 537\nselect * from activities where id = 64400389; # team 563 crm 537\nselect * from activities where id = 58081273; # team 563 crm 537\nselect * from activities where id = 54520297; # team 563 crm 537\nselect * from participants where activity_id = 58081273;\n\nselect * from activities where crm_configuration_id = 537 and provider = 'aircall'\nand account_id = 19003658 order by updated_at desc;\n\nselect * from contacts where crm_configuration_id = 537 and id = 35957759;\nselect * from accounts where crm_configuration_id = 537 and id = 19003658;\n\nselect * from automated_report_results where id = 1976;\nselect * from automated_reports where id = 583;\nselect * from activity_searches where id = 87714;\nselect * from activity_search_filters where activity_search_id = 87714;\n\nSELECT * FROM activities WHERE uuid_to_bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid\nor uuid_to_bin('47842446-af51-4bcb-854f-cc6560290101') = uuid;\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot';\nselect * from rate_limits;\n\nselect * from automated_report_results where media_type = 'pdf' and status = 2\nand id IN (18, 1872);\nselect * from automated_reports where id = 54;\nSELECT * FROM users WHERE id IN (24623,29443,29613);\n\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\n\nselect * from text_relays where created_at > '2026-05-01';\nand id IN (32415, 32416);\n# and id = 32412;\n\nselect * from users where team_id = 2 and email like '%scott%' and id = 29510;\n\nSELECT * FROM activities WHERE uuid_to_bin('67cebfc2-ed56-44a2-8c68-7a0286ed8618') = uuid; # 79763436\n\nSELECT email_provider_id, COUNT(*) as count, GROUP_CONCAT(id) as ids, GROUP_CONCAT(status) as statuses\nFROM text_relays\nWHERE email_provider_id IN ('19e2027868a64b42', '19e2033ed8ea6b10')\nGROUP BY email_provider_id;\nSELECT id, status, telephony_provider_id, created_at\nFROM activities\nWHERE id IN (80028719, 80028846);\nSELECT id, status, code, email_sent_at, created_at, updated_at\nFROM text_relays\nWHERE id IN (32415, 32416);\nSELECT id, status, code, sender, recipient, created_at\nFROM text_relays\nWHERE sender LIKE '%mario.georgiev%' OR sender LIKE '%stoyan.tomov%'\nORDER BY created_at DESC\nLIMIT 10;\n\nSELECT id, uuid, status, code, sender, recipient, created_at, updated_at\nFROM text_relays\nWHERE uuid = uuid_to_bin('0626141c-27a6-4d8c-aff8-7c8020a2c656');\n\n# ***************\nSELECT DISTINCT u.id, u.email, u.name, u.softphone_number, COUNT(a.id) as sms_count\nFROM users u\nINNER JOIN activities a ON u.id = .user_id\nWHERE a.type LIKE 'sms%'\nAND a.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)\nGROUP BY u.id, u.email, u.name, u.softphone_number\nORDER BY sms_count DESC;\n\nselect * from teams where id = 1;\n\nselect * from roles;\n\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1117 and sa.provider = 'hubspot';\nSELECT * FROM activities WHERE uuid_to_bin('8024fffb-2df7-4017-91f4-d9f896050248') = uuid; # 79933459 YES\nSELECT * FROM activities WHERE uuid_to_bin('25529043-8094-4781-927f-4f4da2a8185c') = uuid; # 80186192 NO\nSELECT * FROM crm_configurations WHERE id = 1053;\nSELECT * FROM teams WHERE id = 1117;\nselect * from users where id = 30249;\nselect * from playbooks where id = 5473;\nselect * from playbook_categories where id = 43783;\nselect * from playbook_categories where playbook_id = 5473;\nselect * from crm_fields where id = 659242;\nselect * from crm_field_values where crm_field_id = 659242;\n\nSELECT * FROM crm_field_data fd\n# JOIN crm_fields f ON fd.crm_field_id = f.id\n# JOIN activities a ON fd.activity_id = a.id\nWHERE activity_id = 79933459\n# AND f.crm_provider_id = 'hs_activity_type';\n\nselect * from text_relays where created_at > '2026-05-01';\nselect * from activities where user_id IN (7160, 18608) and created_at > '2026-05-22' order by id desc;\nselect * from users where team_id = 1;","depth":4,"on_screen":true,"value":"SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993\nSELECT * FROM users WHERE id = 25061;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 994;\nSELECT * FROM crm_profiles WHERE user_id = 25061;\n\nselect * from crm_configurations where id = 834;\nSELECT * FROM teams WHERE id = 882;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;\n\nSELECT * FROM contacts where crm_configuration_id = 834;\nSELECT * FROM opportunities WHERE team_id = 933\n# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');\nAND id IN (8482561,18352941,19042734,19232139,19445140,19472541);\nSELECT * FROM opportunity_contacts\nWHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 485; #\nSELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\nselect crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id\nwhere crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')\n# and l.converted_at IS NOT NULL\n;\n\n# ********************************************************************\nSELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')\nand opportunity_id IS NULL\norder by id desc;\n\nSELECT * FROM teams WHERE id = 604; # 598\nSELECT * FROM activities WHERE id = 74410828; # chelseaw@allvoices.co\nSELECT * FROM accounts WHERE id = 20068382;\nSELECT * FROM accounts WHERE id = 35186038;\n\nSELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 559 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;\nselect * from sidekick_settings where team_id = 781;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100\n\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 711;\nSELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL\nand is_internal = 0 and status = 'completed'\norder by id desc;\n\nSELECT * FROM crm_layout_entities\nWHERE crm_layout_id IN (2352, 2353);\n;\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 556 and sa.provider = 'hubspot';\n\nSELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;\nSELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;\nselect * from contacts\nwhere crm_configuration_id = 530\nand crm_provider_id = 872252;\n\nselect * from activities where crm_configuration_id = 530\nand user_id = 14343 and type like '%softphone%'\nand created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';\n\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya\nSELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);\n\n\nSELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t\nJOIN crm_configurations c ON t.id = c.team_id\nWHERE t.status = 'active';\n\nSELECT * FROM teams where id = 1091;\nSELECT * FROM crm_configurations where team_id = 1091;\nSELECT * FROM activity_providers where team_id = 1091;\nSELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT * FROM teams WHERE name LIKE '%Leadventure%';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1091 and sa.provider = 'salesforce';\n\nSELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812\nSELECT * FROM teams where id = 862;\nSELECT * FROM crm_configurations where team_id = 862;\nSELECT * FROM activity_providers where team_id = 862;\nSELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')\nand provider NOT IN ('hubspot', 'aircall')\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by id desc;\n\n\nSELECT t.id, crm.id, crm.provider, ap.* FROM teams t\njoin crm_configurations crm on t.id = crm.team_id\njoin activity_providers ap on t.id = ap.team_id\nwhere t.status = 'active' and ap.is_enabled = 1\nand crm.provider = 'hubspot'\nand ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',\n 'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');\n\nSELECT * FROM teams where id = 1068;\nSELECT * FROM crm_configurations where team_id = 1068;\nSELECT * FROM activity_providers where team_id = 1068;\n\nSELECT * FROM activities a\nwhere crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')\nand a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'\n )\n# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'\norder by a.id desc;\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1068 and sa.provider = 'hubspot';\n\n# ********************************************************************\n# ********************************************************************\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 933 and sa.provider = 'hubspot';\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262\nSELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 882 and sa.provider = 'hubspot';\nselect * from crm_layouts where crm_configuration_id = 834;\nselect * from crm_layout_entities where crm_layout_id = 2780;\nselect * from crm_fields where id IN (321153,321192,321193,321194);\n\nSELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1057 and sa.provider = 'hubspot';\n\nSELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8\n\nSELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20\n\nSELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last\n\nSELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10\n\nSELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2\n\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;\n\nSELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th\n# ********************************************************************\nSELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #\n\nSELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;\nselect * from users where team_id = 51; # 7783\nSELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130\nselect * from activity_searches where user_id = 7783;\nselect * from activity_search_filters where activity_search_id IN (32291, 32292);\n\nSELECT asf.activity_search_id, asf.id, asf.value\nFROM activity_search_filters asf\nWHERE asf.filter = 'group_id'\nAND asf.value IN (\n SELECT CONCAT(\n HEX(SUBSTR(uuid, 5, 4)), '-',\n HEX(SUBSTR(uuid, 3, 2)), '-',\n HEX(SUBSTR(uuid, 1, 2)), '-',\n HEX(SUBSTR(uuid, 9, 2)), '-',\n HEX(SUBSTR(uuid, 11))\n )\n FROM groups\n WHERE deleted_at IS NOT NULL\n);\n\nSELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th\n# ********************************************************************\nSELECT * FROM crm_configurations where provider = 'hubspot';\nSELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133\nSELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;\nSELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null\n# ********************************************************************\n\nselect * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';\nselect\n cp.*\n# DISTINCT t.id\n# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields\nFROM crm_profiles cp\nJOIN crm_configurations crm on crm.id = cp.crm_configuration_id\nJOIN users u on u.id = cp.user_id\nJOIN teams t ON t.id = crm.team_id\nWHERE crm.provider = 'salesforce' and t.status = 'active'\n and cp.archived_at IS NULL and u.deleted_at IS NULL\n and t.id NOT IN (1093)\n and t.id = 2\n and cp.contact_fields IS NULL;\n# and c.crm_provider_id = '003Uu00000ojD4NIAU';\n\nSELECT * FROM users WHERE id = 26484;\nSELECT * FROM crm_profiles WHERE user_id = 26484;\nSELECT * FROM social_accounts WHERE sociable_id = 26484;\nSELECT * FROM crm_configurations where provider = 'salesforce';\nselect * from users where id IN (10022, 10403);\nselect * from users where team_id IN (526);\nselect * from teams where id IN (526, 532);\nselect * from crm_configurations where id IN (500, 516);\nselect * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);\nselect * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 526 and sa.provider = 'salesforce';\nselect * from team_settings where team_id IN (526, 532);\n\nselect * from users where id IN (22824);\nselect * from crm_profiles where crm_configuration_id IN (1026);\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1093 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1099;\nselect * from users where id = 29643\n\nselect * from activity_processing_states;\n\nSELECT * FROM teams where name LIKE '%Fare%'; # 233\nSELECT * FROM opportunities where crm_configuration_id = 215\n# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'\n;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1088 and sa.provider = 'hubspot';\n\nSELECT * FROM teams order by updated_at DESC\nSELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account\n\nselect * from crm_configurations where provider = 'pipedrive';\n\nselect * from teams where id = 957;\nselect * from crm_configurations where id = 957;\n\nSELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743\nSELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;\n\nselect * from users where team_id = 1; # 26726 - Gabriela Dureva\nSELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific\nselect * from activities where user_id = 26726 order by id desc;\nselect * from contacts where crm_configuration_id = 1\nand email IN ('charlotte.ward@prolific.com', 'frankie.bryant@prolific.com'); # 2094416, 2093620\nSELECT * FROM contacts WHERE id = 6284931;\n\nSELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id\nWHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;\n\nselect * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);\nselect * from crm_configurations where id = 1;\n\n43801692-1aeb-32ce-acba-5b80a479701a\n44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b\n405975c0-b3d0-7aaa-821f-09d59cae6dd1\n4caf848d-4bed-2299-b248-7788d41f9fca\n49bedc3f-f196-eef3-89c3-dea6a3b4aa63\n43420989-a09d-b8f8-9806-c8bbf7a02aac\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nSELECT * FROM activities WHERE id = 75461988;\n\nSELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;\n\nselect * from contacts where id = 17900517;\n\nselect * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id\nwhere crm.provider != 'salesforce';\n\nselect * from users where id = 21047;\nSELECT * FROM crm_configurations WHERE id = 892;\nSELECT * FROM teams WHERE id = 942;\nselect * from opportunities where team_id = 942 order by updated_at desc;\nselect * from contacts where team_id = 942 order by updated_at desc;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 942 and sa.provider = 'hubspot';\n\nSELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430\nSELECT * FROM crm_configurations WHERE id = 1;\nSELECT * FROM teams WHERE crm_id = 1;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1 and sa.provider = 'salesforce';\n\nselect id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1\nSELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430\n\nselect * from teams where id = 852;\nselect * from groups where id = 2286;\nselect * from sidekick_settings where team_id = 852;\nselect * from default_activity_types where team_id = 852;\n\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1 AND u.deleted_at IS NULL\nAND u.crm_required = 1\nAND u.team_id = 1\nORDER BY u.team_id;\n\nSELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (\n18481\n );\n\nSELECT cc.provider, cc.id, p.id, u.*\nFROM users u\nLEFT JOIN crm_profiles p ON u.id = p.user_id\nINNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'\nINNER JOIN crm_configurations cc ON t.crm_id = cc.id\nWHERE u.status = 1\n AND u.deleted_at IS NULL\n AND u.crm_required = 1\n# AND u.team_id = 1\n AND p.id IS NULL -- Move this condition to WHERE clause\nORDER BY u.team_id;\n\nSELECT * FROM opportunities WHERE id = 20002609;\nselect * from teams where id = 1122; # Velatir, 29953 - christian@velatir.com\nselect * from crm_configurations where id = 1060;\nselect * from crm_layouts where crm_configuration_id = 1060;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1122 and sa.provider = 'hubspot';\nselect * from opportunities where team_id = 1122 order by updated_at desc;\n\nselect * from crm_field_data where object_type = 'contact';\n\nSELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 248 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS\nSELECT * FROM users where id = 24115;\nSELECT * FROM accounts where id = 4002896;\nSELECT * FROM teams WHERE name LIKE '%adswerve%';\nSELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN (\"0069N000003GIQ9QAO\",\"0061r000019yGP9AAM\",\"0066900001S2KWlAAN\",\"0066900001TDpj2AAD\",\"0066900001b8uEwAAI\",\"0069N000001rQi0QAE\",\"006QF00000KD40mYAD\",\"006QF00000LzpRJYAZ\",\"0069N000002uomtQAA\",\"0069N000002xlMLQAY\",\"0066900001NV6ubAAD\",\"0061r00001HJp45AAD\",\"006QF00000uTlUoYAK\",\"006QF00000v0bZqYAI\");\nSELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203\n\nSELECT u.id, u.email, ac.name, a.* FROM activities a\nJOIN users u ON a.user_id = u.id\nJOIN accounts ac ON a.account_id = ac.id\nWHERE\nuuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or\nuuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or\nuuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;\n\nselect * from users where id = 5825;\nSELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;\n\nselect * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;\n19594, 862\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 862 and sa.provider = 'salesforce';\n\nselect * from automated_reports where id = 36;\nselect ar.frequency, r.*, ar.* from automated_report_results r\njoin automated_reports ar on r.report_id = ar.id\nwhere ar.frequency != 'one_off';\n\nselect s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;\nselect * from nudges n where n.activity_search_id\n\nselect * from teams where created_at > '2026-03-09';\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;\n\nselect * from users where team_id = 1 and name like '%Lukas%'; # 7160\n\nSELECT * FROM teams WHERE id = 575;\nselect * from opportunities where team_id = 575;\nSELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,\nselect * from opportunities where team_id = 1126;\nSELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,\nselect * from opportunities where team_id = 1125;\nselect * from contacts c\nwhere c.team_id = 882;\n\nSELECT * FROM activities WHERE id = 76822967;\nSELECT * FROM crm_profiles WHERE user_id = 15440;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 555;\nSELECT * FROM crm_configurations WHERE id = 555;\nSELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 581 and sa.provider = 'salesforce';\n\nSELECT * FROM automated_report_results order by id desc;\n\nselect * from features;\nselect * from team_features where feature_id = 40;\n\nselect * from teams where id = 556;\n\nselect * from automated_reports;\nwhere id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , [\"pdf\",\"podcast\"]\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\nselect * from automated_report_results order by id desc;\nSELECT * FROM automated_report_results WHERE id = 1919;\n\nselect * from automated_report_results WHERE report_id = 54;\n\nselect * from opportunities where id = 7594349;\n\nSELECT * FROM teams WHERE name LIKE '%Les%'; # 711, 692, 16067 - jiminnyintegration@lesmills.com\nselect * from playbooks where team_id = 711; # event 226147\nSELECT * FROM playbook_categories WHERE playbook_id = 5515;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 692 and object_type = 'event';\nSELECT * FROM crm_fields WHERE id = 226147;\nSELECT * FROM crm_field_values WHERE crm_field_id = 226147;\n\nSELECT * FROM crm_configurations WHERE id = 692;\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 711 and sa.provider = 'salesforce';\n\nSELECT * FROM crm_profiles cp JOIN users u on u.id = cp.user_id WHERE u.team_id = 711;\n\nselect * from leads;\n\nselect * from calendars;\n\nSELECT\n t.id AS team_id,\n t.name,\n LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1)) AS calendar_domain\nFROM teams t\nJOIN users u ON u.team_id = t.id\nJOIN calendars c ON c.user_id = u.id AND c.status = 'active' AND c.calendar_provider_id LIKE '%@%'\nLEFT JOIN team_domains td\n ON td.team_id = t.id\n AND td.deleted_at IS NULL\n AND td.domain = LOWER(SUBSTRING_INDEX(c.calendar_provider_id, '@', -1))\nGROUP BY t.id, t.name, calendar_domain\nORDER BY t.name, calendar_domain;\n\nselect * from users u join calendars c on c.user_id = u.id\nwhere u.team_id = 882;\n\n\nselect * from activities where id = 74049485; # team 563 crm 537\nselect * from activities where id = 73272382; # team 563 crm 537\nselect * from activities where id = 64400389; # team 563 crm 537\nselect * from activities where id = 58081273; # team 563 crm 537\nselect * from activities where id = 54520297; # team 563 crm 537\nselect * from participants where activity_id = 58081273;\n\nselect * from activities where crm_configuration_id = 537 and provider = 'aircall'\nand account_id = 19003658 order by updated_at desc;\n\nselect * from contacts where crm_configuration_id = 537 and id = 35957759;\nselect * from accounts where crm_configuration_id = 537 and id = 19003658;\n\nselect * from automated_report_results where id = 1976;\nselect * from automated_reports where id = 583;\nselect * from activity_searches where id = 87714;\nselect * from activity_search_filters where activity_search_id = 87714;\n\nSELECT * FROM activities WHERE uuid_to_bin('8827f672-202d-4162-9d04-73ff5f0566a9') = uuid\nor uuid_to_bin('47842446-af51-4bcb-854f-cc6560290101') = uuid;\n\nSELECT * FROM crm_configurations WHERE provider = 'hubspot';\nselect * from rate_limits;\n\nselect * from automated_report_results where media_type = 'pdf' and status = 2\nand id IN (18, 1872);\nselect * from automated_reports where id = 54;\nSELECT * FROM users WHERE id IN (24623,29443,29613);\n\nSELECT * FROM automated_report_results WHERE uuid_to_bin('822fa41b-afd3-43a9-a248-86b0e36f3131') = uuid;\n\nselect * from text_relays where created_at > '2026-05-01';\nand id IN (32415, 32416);\n# and id = 32412;\n\nselect * from users where team_id = 2 and email like '%scott%' and id = 29510;\n\nSELECT * FROM activities WHERE uuid_to_bin('67cebfc2-ed56-44a2-8c68-7a0286ed8618') = uuid; # 79763436\n\nSELECT email_provider_id, COUNT(*) as count, GROUP_CONCAT(id) as ids, GROUP_CONCAT(status) as statuses\nFROM text_relays\nWHERE email_provider_id IN ('19e2027868a64b42', '19e2033ed8ea6b10')\nGROUP BY email_provider_id;\nSELECT id, status, telephony_provider_id, created_at\nFROM activities\nWHERE id IN (80028719, 80028846);\nSELECT id, status, code, email_sent_at, created_at, updated_at\nFROM text_relays\nWHERE id IN (32415, 32416);\nSELECT id, status, code, sender, recipient, created_at\nFROM text_relays\nWHERE sender LIKE '%mario.georgiev%' OR sender LIKE '%stoyan.tomov%'\nORDER BY created_at DESC\nLIMIT 10;\n\nSELECT id, uuid, status, code, sender, recipient, created_at, updated_at\nFROM text_relays\nWHERE uuid = uuid_to_bin('0626141c-27a6-4d8c-aff8-7c8020a2c656');\n\n# ***************\nSELECT DISTINCT u.id, u.email, u.name, u.softphone_number, COUNT(a.id) as sms_count\nFROM users u\nINNER JOIN activities a ON u.id = .user_id\nWHERE a.type LIKE 'sms%'\nAND a.created_at > DATE_SUB(NOW(), INTERVAL 30 DAY)\nGROUP BY u.id, u.email, u.name, u.softphone_number\nORDER BY sms_count DESC;\n\nselect * from teams where id = 1;\n\nselect * from roles;\n\n\nSELECT\n CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,\n u.email,\n sa.*,\n t.owner_id FROM social_accounts sa\nJOIN users u on u.id = sa.sociable_id\nJOIN teams t on t.id = u.team_id\nWHERE u.team_id = 1117 and sa.provider = 'hubspot';\nSELECT * FROM activities WHERE uuid_to_bin('8024fffb-2df7-4017-91f4-d9f896050248') = uuid; # 79933459 YES\nSELECT * FROM activities WHERE uuid_to_bin('25529043-8094-4781-927f-4f4da2a8185c') = uuid; # 80186192 NO\nSELECT * FROM crm_configurations WHERE id = 1053;\nSELECT * FROM teams WHERE id = 1117;\nselect * from users where id = 30249;\nselect * from playbooks where id = 5473;\nselect * from playbook_categories where id = 43783;\nselect * from playbook_categories where playbook_id = 5473;\nselect * from crm_fields where id = 659242;\nselect * from crm_field_values where crm_field_id = 659242;\n\nSELECT * FROM crm_field_data fd\n# JOIN crm_fields f ON fd.crm_field_id = f.id\n# JOIN activities a ON fd.activity_id = a.id\nWHERE activity_id = 79933459\n# AND f.crm_provider_id = 'hs_activity_type';\n\nselect * from text_relays where created_at > '2026-05-01';\nselect * from activities where user_id IN (7160, 18608) and created_at > '2026-05-22' order by id desc;\nselect * from users where team_id = 1;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2616164468180441393
|
1065678669561083719
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
45
1
41
66
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE name LIKE '%litify%'; # 1069, 994, 24993
SELECT * FROM users WHERE id = 25061;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 994;
SELECT * FROM crm_profiles WHERE user_id = 25061;
select * from crm_configurations where id = 834;
SELECT * FROM teams WHERE id = 882;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations WHERE provider = 'hubspot' and crm_provider_id = 7270388;
SELECT * FROM contacts where crm_configuration_id = 834;
SELECT * FROM opportunities WHERE team_id = 933
# AND crm_provider_id IN ('20131586060','46017317898','52543911090','53451356564','54101251892','54323768459');
AND id IN (8482561,18352941,19042734,19232139,19445140,19472541);
SELECT * FROM opportunity_contacts
WHERE opportunity_id IN (8482561,18352941,19042734,19232139,19445140,19472541);
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 485; #
SELECT * FROM opportunities WHERE team_id = 933 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
select crm.provider, l.* from leads l join crm_configurations crm on l.crm_configuration_id = crm.id
where crm.provider NOT IN ('salesforce', 'integration-app', 'bullhorn', 'copper')
# and l.converted_at IS NOT NULL
;
# [PASSWORD_DOTS]
SELECT * FROM activities a WHERE type IN ('email-inbound', 'email-outbound')
and opportunity_id IS NULL
order by id desc;
SELECT * FROM teams WHERE id = 604; # 598
SELECT * FROM activities WHERE id = 74410828; # [EMAIL]
SELECT * FROM accounts WHERE id = 20068382;
SELECT * FROM accounts WHERE id = 35186038;
SELECT * FROM contacts WHERE team_id = 852 and updated_at > '2026-01-23 12:30:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 559 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('cb6342b6-a183-401c-b0af-ede92b2ae763') = uuid;
select * from sidekick_settings where team_id = 781;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 26651871; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 7562435;
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8420347; # opflit 2100
SELECT * FROM crm_layouts WHERE crm_configuration_id = 711;
SELECT * FROM activities where crm_configuration_id = 711 and crm_provider_id IS NULL
and is_internal = 0 and status = 'completed'
order by id desc;
SELECT * FROM crm_layout_entities
WHERE crm_layout_id IN (2352, 2353);
;
SELECT * FROM crm_configurations where provider = 'hubspot' and id = 530;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 556 and sa.provider = 'hubspot';
SELECT * FROM activities WHERE uuid_to_bin('c6ca4b22-7738-4563-a95d-b8a9598924ae') = uuid;
SELECT * FROM activities WHERE uuid_to_bin('442abb2b-28bd-4be8-9c25-19e9bf02766d') = uuid;
select * from contacts
where crm_configuration_id = 530
and crm_provider_id = 872252;
select * from activities where crm_configuration_id = 530
and user_id = 14343 and type like '%softphone%'
and created_at between '2026-01-28 15:00:00' and '2026-01-28 15:10:00';
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 25666868; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id = 8646335; # Teya
SELECT * FROM crm_configurations where provider = 'hubspot' and crm_provider_id IN (5933397);
SELECT t.name, t.id, t.owner_id, c.id, c.provider, c.crm_base_url FROM teams t
JOIN crm_configurations c ON t.id = c.team_id
WHERE t.status = 'active';
SELECT * FROM teams where id = 1091;
SELECT * FROM crm_configurations where team_id = 1091;
SELECT * FROM activity_providers where team_id = 1091;
SELECT * FROM activities where crm_configuration_id = 1024 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT * FROM teams WHERE name LIKE '%Leadventure%';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1091 and sa.provider = 'salesforce';
SELECT * FROM teams WHERE name LIKE '%Wilson%'; # 862, 812
SELECT * FROM teams where id = 862;
SELECT * FROM crm_configurations where team_id = 862;
SELECT * FROM activity_providers where team_id = 862;
SELECT * FROM activities where crm_configuration_id = 812 and type IN ('softphone', 'softphone-outbound')
and provider NOT IN ('hubspot', 'aircall')
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by id desc;
SELECT t.id, crm.id, crm.provider, ap.* FROM teams t
join crm_configurations crm on t.id = crm.team_id
join activity_providers ap on t.id = ap.team_id
where t.status = 'active' and ap.is_enabled = 1
and crm.provider = 'hubspot'
and ap.provider NOT IN ('hubspot', 'aircall', 'uploader', 'gong', 'twilio', 'zoom-bot', 'google-meet', 'ms-teams',
'outreach', 'close', 'ringcentral', 'dialpad', 'zoom-phone');
SELECT * FROM teams where id = 1068;
SELECT * FROM crm_configurations where team_id = 1068;
SELECT * FROM activity_providers where team_id = 1068;
SELECT * FROM activities a
where crm_configuration_id = 993 and type IN ('softphone', 'softphone-outbound')
and a.provider NOT IN ('hubspot', 'uploader', 'gong', 'twilio', 'google-meet', 'ms-teams','close'
)
# and telephony_provider_id = '019c1131-a22f-4792-b9ea-20adf6a02ed0'
order by a.id desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1068 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 882; # 933 - GoGlobal , portalId: 6017093
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 933 and updated_at > '2026-02-06 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 933 and sa.provider = 'hubspot';
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 834; # 882 - AnyVan , portalId: 5468262
SELECT * FROM contacts WHERE crm_configuration_id = 834 and updated_at > '2026-03-30 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and updated_at > '2026-03-04 08:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 882 and sa.provider = 'hubspot';
select * from crm_layouts where crm_configuration_id = 834;
select * from crm_layout_entities where crm_layout_id = 2780;
select * from crm_fields where id IN (321153,321192,321193,321194);
SELECT * FROM opportunities WHERE crm_configuration_id = 834 and id = 10993426;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 988; # 1057 - Teya (543ce4f4-168c-4571-91ea-5b35c253f06f) , portalId: 26651871
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1057 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1057 and sa.provider = 'hubspot';
SELECT * FROM crm_configurations where id = 533; # 559 - Connectd , portalId: 6710988
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 559 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 801; # 852 - Rise Vision , portalId: 2700250
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 852 and updated_at > '2026-02-04 00:00:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 962; # 1034 - evergrowth.io , portalId: 143180990
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1034 and updated_at > '2026-02-04 00:00:00' order by updated_at desc;
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 1037; # 1102 - Jibble , portalId: 6649755
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1102 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 8
SELECT * FROM crm_configurations where id = 1015; # 1049 - Travefy , portalId: 48904401
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1049 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 20
SELECT * FROM crm_configurations where id = 64; # 70 - SalaryFinance , portalId: 3404115
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 70 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 6th last
SELECT * FROM crm_configurations where id = 802; # 853 - Street Group , portalId: 7658438
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 853 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 10
SELECT * FROM crm_configurations where id = 872; # 921 - In Professional Development , portalId: 9238273
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 921 and updated_at > '2026-02-04 12:30:00' order by updated_at desc; # 2
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 550; # 576 - SeedLegals , portalId: 3028661
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 576 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 989; # 1058 - rtaoutdoor.com , portalId: 22371204
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1058 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 896; # 946 - Mintago , portalId: 6621281
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 946 and updated_at > '2026-02-05 14:00:00' order by updated_at desc;
SELECT * FROM crm_configurations where id = 617; # 641 - PCS , portalId: 5244937
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 641 and updated_at > '2026-02-05 14:00:00' order by updated_at desc; # 7th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where id = 649; # 670 - Eventeny , portalId: 4492849
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-18 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 670 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; #
SELECT * FROM crm_configurations where id = 48; # 51 - CleanCloud , portalId: 4373137
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-03-04 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 51 and updated_at > '2026-02-09 08:00:00' order by updated_at desc;
select * from users where team_id = 51; # 7783
SELECT * FROM groups WHERE uuid_to_bin('8a8d2cb6-8b55-4fa3-8b5c-5f0e3d8de59a') = uuid; # 1130
select * from activity_searches where user_id = 7783;
select * from activity_search_filters where activity_search_id IN (32291, 32292);
SELECT asf.activity_search_id, asf.id, asf.value
FROM activity_search_filters asf
WHERE asf.filter = 'group_id'
AND asf.value IN (
SELECT CONCAT(
HEX(SUBSTR(uuid, 5, 4)), '-',
HEX(SUBSTR(uuid, 3, 2)), '-',
HEX(SUBSTR(uuid, 1, 2)), '-',
HEX(SUBSTR(uuid, 9, 2)), '-',
HEX(SUBSTR(uuid, 11))
)
FROM groups
WHERE deleted_at IS NOT NULL
);
SELECT * FROM crm_configurations where id = 272; # 290 - Bonham & Brook , portalId: 5705856
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-05 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 290 and updated_at > '2026-02-09 08:00:00' order by updated_at desc; # 6th
# [PASSWORD_DOTS]
SELECT * FROM crm_configurations where provider = 'hubspot';
SELECT * FROM crm_configurations where id = 1056; # 1119 - Chromatic , portalId: 45602133
SELECT * FROM opportunities WHERE team_id = 1119 and remotely_created_at > '2026-02-01 00:00:00' order by updated_at desc;
SELECT * FROM opportunities WHERE team_id = 1119 and updated_at > '2026-02-09 09:00:00' order by updated_at desc; # null
# [PASSWORD_DOTS]
select * from contacts where crm_provider_id = '003Uu00000ojD4NIAU';
select
cp.*
# DISTINCT t.id
# cp.id, cp.user_id, t.id, cp.crm_configuration_id, cp.contact_fields
FROM crm_profiles cp
JOIN crm_configurations crm on crm.id = cp.crm_configuration_id
JOIN users u on u.id = cp.user_id
JOIN teams t ON t.id = crm.team_id
WHERE crm.provider = 'salesforce' and t.status = 'active'
and cp.archived_at IS NULL and u.deleted_at IS NULL
and t.id NOT IN (1093)
and t.id = 2
and cp.contact_fields IS NULL;
# and c.crm_provider_id = '003Uu00000ojD4NIAU';
SELECT * FROM users WHERE id = 26484;
SELECT * FROM crm_profiles WHERE user_id = 26484;
SELECT * FROM social_accounts WHERE sociable_id = 26484;
SELECT * FROM crm_configurations where provider = 'salesforce';
select * from users where id IN (10022, 10403);
select * from users where team_id IN (526);
select * from teams where id IN (526, 532);
select * from crm_configurations where id IN (500, 516);
select * from crm_profiles where crm_configuration_id IN (500, 516) and user_id IN (10022, 10403);
select * from contacts where crm_configuration_id IN (500, 516) and crm_provider_id = '003Uu00000ojD4NIAU';
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 526 and sa.provider = 'salesforce';
select * from team_settings where team_id IN (526, 532);
select * from users where id IN (22824);
select * from crm_profiles where crm_configuration_id IN (1026);
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1093 and sa.provider = 'salesforce';
select * from teams where id = 1099;
select * from users where id = 29643
select * from activity_processing_states;
SELECT * FROM teams where name LIKE '%Fare%'; # 233
SELECT * FROM opportunities where crm_configuration_id = 215
# and crm_provider_id = 'oppo_ogESZf2P50nDrd1nGPvKDXeA6sSaTN5v51Lp4ayVzKR'
;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1088 and sa.provider = 'hubspot';
SELECT * FROM teams order by updated_at DESC
SELECT * FROM crm_configurations WHERE id = 1019; # SimpleConsign 1088 - no social account
select * from crm_configurations where provider = 'pipedrive';
select * from teams where id = 957;
select * from crm_configurations where id = 957;
SELECT * FROM teams WHERE name LIKE '%Prolific%'; # 544, 518, 10743
SELECT * FROM opportunities where crm_configuration_id = 518 order by id desc;
select * from users where team_id = 1; # 26726 - Gabriela Dureva
SELECT * FROM opportunities where user_id = 26726; # 16834447 - Prolific
select * from activities where user_id = 26726 order by id desc;
select * from contacts where crm_configuration_id = 1
and email IN ('[EMAIL]', '[EMAIL]'); # 2094416, 2093620
SELECT * FROM contacts WHERE id = 6284931;
SELECT p.* FROM activities a JOIN participants p ON a.id = p.activity_id
WHERE a.user_id = 26726 and p.lead_id IN (2094416, 2093620) and a.created_at > '2026-01-01 00:00:00' order by p.email;
select * from activities where id IN (75509259,75509261,75509261,75511034,75026464,75517602,75517605);
select * from crm_configurations where id = 1;
43801692-1aeb-32ce-acba-5b80a479701a
44c3c9cf-6f5e-75f3-8179-bc9f75dd2b1b
405975c0-b3d0-7aaa-821f-09d59cae6dd1
4caf848d-4bed-2299-b248-7788d41f9fca
49bedc3f-f196-eef3-89c3-dea6a3b4aa63
43420989-a09d-b8f8-9806-c8bbf7a02aac
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
SELECT * FROM activities WHERE id = 75461988;
SELECT * FROM activities WHERE uuid_to_bin('d6c5052e-e972-49e9-8912-26f2f7d6c5f6') = uuid;
select * from contacts where id = 17900517;
select * from contact_roles cr join crm_configurations crm on cr.crm_configuration_id = crm.id
where crm.provider != 'salesforce';
select * from users where id = 21047;
SELECT * FROM crm_configurations WHERE id = 892;
SELECT * FROM teams WHERE id = 942;
select * from opportunities where team_id = 942 order by updated_at desc;
select * from contacts where team_id = 942 order by updated_at desc;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 942 and sa.provider = 'hubspot';
SELECT * FROM opportunities where team_id = 1 and crm_provider_id IN ('006Pq00000NeH6XIAV', '006Pq000007z8kdIAA'); # 10697889, 6621430
SELECT * FROM crm_configurations WHERE id = 1;
SELECT * FROM teams WHERE crm_id = 1;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1 and sa.provider = 'salesforce';
select id, user_id, opportunity_fields from crm_profiles where crm_configuration_id = 1
SELECT * FROM opportunities where team_id = 1 order by updated_at desc; # 10697889, 6621430
select * from teams where id = 852;
select * from groups where id = 2286;
select * from sidekick_settings where team_id = 852;
select * from default_activity_types where team_id = 852;
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id AND p.id IS NULL -- no profile
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active' -- team is active
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1 AND u.deleted_at IS NULL
AND u.crm_required = 1
AND u.team_id = 1
ORDER BY u.team_id;
SELECT * FROM crm_profiles cp where cp.crm_configuration_id = 1 and cp.user_id IN (
18481
);
SELECT cc.provider, cc.id, p.id, u.*
FROM users u
LEFT JOIN crm_profiles p ON u.id = p.user_id
INNER JOIN teams t ON u.team_id = t.id AND t.status = 'active'
INNER JOIN crm_configurations cc ON t.crm_id = cc.id
WHERE u.status = 1
AND u.deleted_at IS NULL
AND u.crm_required = 1
# AND u.team_id = 1
AND p.id IS NULL -- Move this condition to WHERE clause
ORDER BY u.team_id;
SELECT * FROM opportunities WHERE id = 20002609;
select * from teams where id = 1122; # Velatir, 29953 - [EMAIL]
select * from crm_configurations where id = 1060;
select * from crm_layouts where crm_configuration_id = 1060;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3596;
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 1122 and sa.provider = 'hubspot';
select * from opportunities where team_id = 1122 order by updated_at desc;
select * from crm_field_data where object_type = 'contact';
SELECT * FROM activities WHERE uuid_to_bin('374fc8ed-3315-4c9f-9b25-318b7fd2928f') = uuid; # 76584262
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 248 and sa.provider = 'salesforce';
SELECT * FROM crm_profiles where user_id = 24115; # 005QF000002CswMYAS
SELECT * FROM users where id = 24115;
SELECT * FROM accounts where id = 4002896;
SELECT * FROM teams WHERE name LIKE '%adswerve%';
SELECT * FROM opportunities where crm_configuration_id = 230 AND crm_provider_id IN ("0069N000003GIQ9QAO","0061r000019yGP9AAM","0066900001S2KWlAAN","0066900001TDpj2AAD","0066900001b8uEwAAI","0069N000001rQi0QAE","006QF00000KD40mYAD","006QF00000LzpRJYAZ","0069N000002uomtQAA","0069N000002xlMLQAY","0066900001NV6ubAAD","0061r00001HJp45AAD","006QF00000uTlUoYAK","006QF00000v0bZqYAI");
SELECT * FROM opportunities WHERE crm_configuration_id = 230 AND crm_provider_id = '0069N000003GIQ9QAO'; # 6272203
SELECT u.id, u.email, ac.name, a.* FROM activities a
JOIN users u ON a.user_id = u.id
JOIN accounts ac ON a.account_id = ac.id
WHERE
uuid_to_bin('e3269598-b562-44fb-b5e9-9d2694dc63e0') = a.uuid or
uuid_to_bin('66ddc3ab-4e15-45aa-af0c-248c1eece593') = a.uuid or
uuid_to_bin('826bd328-e1cc-4213-b8d8-572454cacc07') = a.uuid;
select * from users where id = 5825;
SELECT * FROM activities WHERE uuid_to_bin('e56aa2e8-231a-421b-ab1f-cb38ed2bf573') = uuid;
select * from activities where uuid_to_bin('91e13b2f-2d1b-45f8-b1fd-1141b6563782') = uuid;
19594, 862
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 862 and sa.provider = 'salesforce';
select * from automated_reports where id = 36;
select ar.frequency, r.*, ar.* from automated_report_results r
join automated_reports ar on r.report_id = ar.id
where ar.frequency != 'one_off';
select s.* from activity_searches s join users u ON s.user_id = u.id where u.team_id = 882;
select * from nudges n where n.activity_search_id
select * from teams where created_at > '2026-03-09';
SELECT * FROM crm_layouts WHERE crm_configuration_id = 1065; # 1065
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 3617;
select * from users where team_id = 1 and name like '%Lukas%'; # 7160
SELECT * FROM teams WHERE id = 575;
select * from opportunities where team_id = 575;
SELECT * FROM teams WHERE name LIKE '%Integrum ESG%'; # 1126, 1065,
select * from opportunities where team_id = 1126;
SELECT * FROM teams WHERE name LIKE '%Base%'; # 1125, 1063,
select * from opportunities where team_id = 1125;
select * from contacts c
where c.team_id = 882;
SELECT * FROM activities WHERE id = 76822967;
SELECT * FROM crm_profiles WHERE user_id = 15440;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 555;
SELECT * FROM crm_configurations WHERE id = 555;
SELECT * FROM users WHERE id = 15440; # team. 581, gr. 15440, pl. 3911, act. field 162182
SELECT
CONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)' ELSE '' END) AS user_id,
u.email,
sa.*,
t.owner_id FROM social_accounts sa
JOIN users u on u.id = sa.sociable_id
JOIN teams t on t.id = u.team_id
WHERE u.team_id = 581 and sa.provider = 'salesforce';
SELECT * FROM automated_report_results order by id desc;
select * from features;
select * from team_features where feature_id = 40;
select * from teams where id = 556;
select * from automated_reports;
where id = 54; # 4fdd41f6-dcf0-30d0-b339-7345381b6044 , ["pdf","podcast"]
SELECT ...
|
71561
|
NULL
|
NULL
|
NULL
|
|
71561
|
2568
|
15
|
2026-05-26T06:55:07.630525+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778507630_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
45...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"32","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"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},"on_screen":false,"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\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\n }\n\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\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,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"on_screen":true,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"45","depth":4,"on_screen":true,"role_description":"text"}]...
|
-3252285585307214071
|
-1996198741548031085
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}
Execute
Explain Plan
Browse Query History
View Parameters
Open Query Execution Settings…
In-Editor Results
Tx: Auto
Cancel Running Statements
Playground
jiminny
Sync Changes
Hide This Notification
Code changed:
Hide
45...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71560
|
2568
|
14
|
2026-05-26T06:55:01.931723+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778501931_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"on_screen":true,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"master, menu","depth":5,"on_screen":true,"help_text":"Git Branch: master<br/>48 incoming commits<br/>","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"TextRelayServiceTest","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'TextRelayServiceTest'","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"on_screen":true,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"on_screen":true,"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},"on_screen":false,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"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},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"on_screen":false,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.016666668,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXStaticText","text":"32","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.021527778,"height":0.02111111},"on_screen":false,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.025555555},"on_screen":false,"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},"on_screen":false,"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\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\n }\n\n}","depth":4,"on_screen":true,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Tests\\Unit\\Services\\Mail;\n\nuse Google\\Service\\Gmail as GoogleGmail;\nuse Google\\Service\\Gmail\\Message as GmailMessage;\nuse Google\\Service\\Gmail\\MessagePart;\nuse Google\\Service\\Gmail\\MessagePartHeader;\nuse Illuminate\\Support\\Facades\\Config;\nuse Illuminate\\Support\\Facades\\Log;\nuse Jiminny\\Component\\Queue\\Constants;\nuse Jiminny\\Jobs\\Mailbox\\EmailTextRelay;\nuse Jiminny\\Models\\TextRelay;\nuse Jiminny\\Services\\Mail\\TextRelayService;\nuse PHPUnit\\Framework\\Attributes\\CoversClass;\nuse PHPUnit\\Framework\\Attributes\\DataProvider;\nuse Tests\\TestCase;\nuse ReflectionClass;\nuse Mockery;\n\n#[CoversClass(TextRelayService::class)]\nclass TextRelayServiceTest extends TestCase\n{\n public static function environmentProvider(): array\n {\n return [\n 'eu_environment' => ['eu', 'catch-all-eu', 'catch-all-eu@txt.jiminny.com'],\n 'us_environment' => ['us', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'other_environment_defaults_to_us' => ['other', 'catch-all', 'catch-all@txt.jiminny.com'],\n 'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n 'us_environment_with_plus_tag' => ['us', 'catch-all', 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.jiminny.com'],\n ];\n }\n\n protected function setUp(): void\n {\n parent::setUp();\n }\n\n protected function tearDown(): void\n {\n Mockery::close();\n parent::tearDown();\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = $recipient;\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertTrue($result);\n }\n\n #[DataProvider('environmentProvider')]\n public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(\n string $deployRegion,\n string $expectedAlias,\n string $recipient\n ): void {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'other@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentLogsRefusedMessage(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentIgnoresToHeader(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'To';\n $header->value = 'catch-all@txt.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithEmptyHeaders(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n\n $payload->method('getHeaders')->willReturn([]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('warning')\n ->once()\n ->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [\n 'message_id' => 'msg123',\n ]);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentWithException(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')\n ->willThrowException(new \\Exception('Gmail API error'));\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to inspect message', [\n 'message_id' => 'msg123',\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void\n {\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n\n $message = $this->createMock(GmailMessage::class);\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all+447700152706.447893937879.3ndZZBqjRo@txt.staging.jiminny.com';\n\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n\n $gmailService = $this->createMock(GoogleGmail::class);\n $gmailService->users_messages = $usersMessages;\n\n $service = $this->createTextRelayService();\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('isForCurrentEnvironment');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');\n\n $this->assertFalse($result);\n }\n\n public function testSyncUsesEuAliasForEuRegion(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncUsesUsAliasForUsRegion(): void\n {\n Config::set('jiminny.deploy_region', 'us');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n }\n\n public function testSyncWithEnhancedLogging(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'catch-all-eu@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Mock TextRelay model\n $textRelay = $this->createMock(TextRelay::class);\n $textRelay->id = 456;\n TextRelay::shouldReceive('where')\n ->with('email_provider_id', 'msg123')\n ->andReturnSelf();\n TextRelay::shouldReceive('first')->andReturn(null);\n TextRelay::shouldReceive('create')\n ->with([\n 'email_provider' => TextRelay::PROVIDER_GSUITE,\n 'email_provider_id' => 'msg123',\n 'status' => TextRelay::STATUS_PROCESSING,\n ])\n ->andReturn($textRelay);\n\n // Mock job dispatch\n \\Queue::shouldReceive('push')->once();\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Successfully dispatched message', [\n 'message_id' => 'msg123',\n 'text_relay_id' => 456,\n 'queue' => Constants::QUEUE_EMAILS,\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 1,\n 'message_ids' => ['msg123'],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEquals(['msg123'], $result);\n }\n\n public function testSyncWithRefusedMessageLogs(): void\n {\n Config::set('jiminny.deploy_region', 'eu');\n Config::set('jiminny.google_text_host', 'txt.jiminny.com');\n Config::set('jiminny.google_text_user', 'test@example.com');\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n // Mock Gmail message with wrong recipient\n $message = $this->createMock(GmailMessage::class);\n $message->id = 'msg123';\n\n $payload = $this->createMock(MessagePart::class);\n $header = $this->createMock(MessagePartHeader::class);\n $header->name = 'X-Gm-Original-To';\n $header->value = 'wrong@txt.jiminny.com';\n $payload->method('getHeaders')->willReturn([$header]);\n $message->method('getPayload')->willReturn($payload);\n\n $usersMessages = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersMessages::class);\n $usersMessages->method('get')->willReturn($message);\n $gmailService->users_messages = $usersMessages;\n\n // Mock history response\n $historyMessage = $this->createMock(\\Google\\Service\\Gmail\\HistoryMessageAdded::class);\n $historyMessage->method('getMessage')->willReturn($message);\n\n $history = $this->createMock(\\Google\\Service\\Gmail\\History::class);\n $history->messagesAdded = [$historyMessage];\n\n $historyResponse = $this->createMock(\\Google\\Service\\Gmail\\ListHistoryResponse::class);\n $historyResponse->historyId = 12345;\n $historyResponse->method('getHistory')->willReturn([$history]);\n $historyResponse->method('getNextPageToken')->willReturn(null);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')->willReturn($historyResponse);\n $gmailService->users_history = $usersHistory;\n\n // Mock cache\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n \\Cache::shouldReceive('put')->with('test-topic', 12345, \\Mockery::on(fn ($expires) => $expires instanceof \\Carbon\\Carbon));\n\n // Expect logging calls\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Starting sync', [\n 'mailbox' => 'test@example.com',\n 'expected_alias' => 'catch-all-eu',\n 'expected_host' => 'txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Refused message', [\n 'message_id' => 'msg123',\n 'original_to' => 'wrong@txt.jiminny.com',\n ]);\n\n Log::shouldReceive('info')\n ->once()\n ->with('[TextRelayService] Sync completed', [\n 'mailbox' => 'test@example.com',\n 'messages_processed' => 0,\n 'message_ids' => [],\n ]);\n\n $reflection = new ReflectionClass($service);\n $syncMethod = $reflection->getMethod('sync');\n $syncMethod->setAccessible(true);\n\n $result = $syncMethod->invoke($service);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n public function testGetHistoryLogsErrorOnException(): void\n {\n Config::set('jiminny.google_text_relay_topic', 'test-topic');\n Config::set('jiminny.google_text_user', 'test@example.com');\n\n $service = $this->createTextRelayService();\n $gmailService = $this->createMock(GoogleGmail::class);\n\n $usersHistory = $this->createMock(\\Google\\Service\\Gmail\\Resource\\UsersHistory::class);\n $usersHistory->method('listUsersHistory')\n ->willThrowException(new \\Exception('Gmail API error'));\n $gmailService->users_history = $usersHistory;\n\n \\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);\n\n Log::shouldReceive('error')\n ->once()\n ->with('[TextRelayService] Failed to fetch Gmail history', [\n 'exception' => 'Gmail API error',\n ]);\n\n \\Sentry::shouldReceive('captureException')\n ->once()\n ->with(\\Mockery::type(\\Exception::class));\n\n $reflection = new ReflectionClass($service);\n $method = $reflection->getMethod('getHistory');\n $method->setAccessible(true);\n\n $result = $method->invoke($service, $gmailService);\n\n $this->assertIsArray($result);\n $this->assertEmpty($result);\n }\n\n private function createTextRelayService(): TextRelayService\n {\n $service = new class () extends TextRelayService {\n public function __construct()\n {\n }\n };\n\n return $service;\n }\n\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
5854725529901615419
|
-843242052569095245
|
visual_change
|
accessibility
|
NULL
|
Project: faVsco.js, menu
master, menu
Start Listen Project: faVsco.js, menu
master, menu
Start Listening for PHP Debug Connections
TextRelayServiceTest
Run 'TextRelayServiceTest'
Debug 'TextRelayServiceTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
9
32
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Tests\Unit\Services\Mail;
use Google\Service\Gmail as GoogleGmail;
use Google\Service\Gmail\Message as GmailMessage;
use Google\Service\Gmail\MessagePart;
use Google\Service\Gmail\MessagePartHeader;
use Illuminate\Support\Facades\Config;
use Illuminate\Support\Facades\Log;
use Jiminny\Component\Queue\Constants;
use Jiminny\Jobs\Mailbox\EmailTextRelay;
use Jiminny\Models\TextRelay;
use Jiminny\Services\Mail\TextRelayService;
use PHPUnit\Framework\Attributes\CoversClass;
use PHPUnit\Framework\Attributes\DataProvider;
use Tests\TestCase;
use ReflectionClass;
use Mockery;
#[CoversClass(TextRelayService::class)]
class TextRelayServiceTest extends TestCase
{
public static function environmentProvider(): array
{
return [
'eu_environment' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment' => ['us', 'catch-all', '[EMAIL]'],
'other_environment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]'],
'eu_environment_with_plus_tag' => ['eu', 'catch-all-eu', '[EMAIL]'],
'us_environment_with_plus_tag' => ['us', 'catch-all', '[EMAIL]'],
];
}
protected function setUp(): void
{
parent::setUp();
}
protected function tearDown(): void
{
Mockery::close();
parent::tearDown();
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = $recipient;
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertTrue($result);
}
#[DataProvider('environmentProvider')]
public function testIsForCurrentEnvironmentWithNonMatchingXGmOriginalToHeader(
string $deployRegion,
string $expectedAlias,
string $recipient
): void {
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', $expectedAlias, 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentLogsRefusedMessage(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentIgnoresToHeader(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithEmptyHeaders(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$payload->method('getHeaders')->willReturn([]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('warning')
->once()
->with('[TextRelayService] Refused message: missing X-Gm-Original-To header', [
'message_id' => 'msg123',
]);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentWithException(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')
->willThrowException(new \Exception('Gmail API error'));
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to inspect message', [
'message_id' => 'msg123',
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testIsForCurrentEnvironmentRejectsWrongHostWithMatchingPlusTag(): void
{
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
$message = $this->createMock(GmailMessage::class);
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService = $this->createMock(GoogleGmail::class);
$gmailService->users_messages = $usersMessages;
$service = $this->createTextRelayService();
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('isForCurrentEnvironment');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService, 'catch-all', 'msg123', 'catch-all', 'txt.jiminny.com');
$this->assertFalse($result);
}
public function testSyncUsesEuAliasForEuRegion(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncUsesUsAliasForUsRegion(): void
{
Config::set('jiminny.deploy_region', 'us');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
}
public function testSyncWithEnhancedLogging(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Mock TextRelay model
$textRelay = $this->createMock(TextRelay::class);
$textRelay->id = 456;
TextRelay::shouldReceive('where')
->with('email_provider_id', 'msg123')
->andReturnSelf();
TextRelay::shouldReceive('first')->andReturn(null);
TextRelay::shouldReceive('create')
->with([
'email_provider' => TextRelay::PROVIDER_GSUITE,
'email_provider_id' => 'msg123',
'status' => TextRelay::STATUS_PROCESSING,
])
->andReturn($textRelay);
// Mock job dispatch
\Queue::shouldReceive('push')->once();
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Successfully dispatched message', [
'message_id' => 'msg123',
'text_relay_id' => 456,
'queue' => Constants::QUEUE_EMAILS,
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 1,
'message_ids' => ['msg123'],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEquals(['msg123'], $result);
}
public function testSyncWithRefusedMessageLogs(): void
{
Config::set('jiminny.deploy_region', 'eu');
Config::set('jiminny.google_text_host', 'txt.jiminny.com');
Config::set('jiminny.google_text_user', '[EMAIL]');
Config::set('jiminny.google_text_relay_topic', 'test-topic');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
// Mock Gmail message with wrong recipient
$message = $this->createMock(GmailMessage::class);
$message->id = 'msg123';
$payload = $this->createMock(MessagePart::class);
$header = $this->createMock(MessagePartHeader::class);
$header->name = 'X-Gm-Original-To';
$header->value = '[EMAIL]';
$payload->method('getHeaders')->willReturn([$header]);
$message->method('getPayload')->willReturn($payload);
$usersMessages = $this->createMock(\Google\Service\Gmail\Resource\UsersMessages::class);
$usersMessages->method('get')->willReturn($message);
$gmailService->users_messages = $usersMessages;
// Mock history response
$historyMessage = $this->createMock(\Google\Service\Gmail\HistoryMessageAdded::class);
$historyMessage->method('getMessage')->willReturn($message);
$history = $this->createMock(\Google\Service\Gmail\History::class);
$history->messagesAdded = [$historyMessage];
$historyResponse = $this->createMock(\Google\Service\Gmail\ListHistoryResponse::class);
$historyResponse->historyId = 12345;
$historyResponse->method('getHistory')->willReturn([$history]);
$historyResponse->method('getNextPageToken')->willReturn(null);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')->willReturn($historyResponse);
$gmailService->users_history = $usersHistory;
// Mock cache
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
\Cache::shouldReceive('put')->with('test-topic', 12345, \Mockery::on(fn ($expires) => $expires instanceof \Carbon\Carbon));
// Expect logging calls
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Starting sync', [
'mailbox' => '[EMAIL]',
'expected_alias' => 'catch-all-eu',
'expected_host' => 'txt.jiminny.com',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Refused message', [
'message_id' => 'msg123',
'original_to' => '[EMAIL]',
]);
Log::shouldReceive('info')
->once()
->with('[TextRelayService] Sync completed', [
'mailbox' => '[EMAIL]',
'messages_processed' => 0,
'message_ids' => [],
]);
$reflection = new ReflectionClass($service);
$syncMethod = $reflection->getMethod('sync');
$syncMethod->setAccessible(true);
$result = $syncMethod->invoke($service);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
public function testGetHistoryLogsErrorOnException(): void
{
Config::set('jiminny.google_text_relay_topic', 'test-topic');
Config::set('jiminny.google_text_user', '[EMAIL]');
$service = $this->createTextRelayService();
$gmailService = $this->createMock(GoogleGmail::class);
$usersHistory = $this->createMock(\Google\Service\Gmail\Resource\UsersHistory::class);
$usersHistory->method('listUsersHistory')
->willThrowException(new \Exception('Gmail API error'));
$gmailService->users_history = $usersHistory;
\Cache::shouldReceive('get')->with('test-topic')->andReturn(10000);
Log::shouldReceive('error')
->once()
->with('[TextRelayService] Failed to fetch Gmail history', [
'exception' => 'Gmail API error',
]);
\Sentry::shouldReceive('captureException')
->once()
->with(\Mockery::type(\Exception::class));
$reflection = new ReflectionClass($service);
$method = $reflection->getMethod('getHistory');
$method->setAccessible(true);
$result = $method->invoke($service, $gmailService);
$this->assertIsArray($result);
$this->assertEmpty($result);
}
private function createTextRelayService(): TextRelayService
{
$service = new class () extends TextRelayService {
public function __construct()
{
}
};
return $service;
}
}...
|
71558
|
NULL
|
NULL
|
NULL
|
|
71559
|
2569
|
6
|
2026-05-26T06:54:57.281019+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778497281_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
=PhpStormViewFV faVsco.s ~%o macteyCodeCarevelC Em =PhpStormViewFV faVsco.s ~%o macteyCodeCarevelC EmailActivityServiceTest.php8 InboySarviceTest.phpTextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallA!> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.pha© TeamOwnerServiceTest.phpCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils› @ Validatione vo€EnuminArravTrait.phoHeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê editorcontioE.enuE.env.circlacilcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallE .env.otheronu nroductiarE .env.production-euFonuasE onu asOOl-CTaytRalny Sarvien nor=custom.loglaravei.oSF- uiminnytblocalhost& HS_Jocal jiminny@localhostA console (EUnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:6USZaREBEB 8AccentResiectluse sminny conoonent queue constants,use Jiminny Models\TextRelayuse Jsminny Services Hara textrelaysemunce.use PHPunft\Franework Attributes Coversclass:luse PiPun Enanenork ,ttributes, betaprousden—403= A0=400—696=697[PHONE]01702-703784use Tests Testrase,use raalact onhiaee.luea Mockeny:Trownnetineeltmyt?anusausea..elneeit1=78=707=708=70924 %oee Thyte Sanusealner aytinde hettepublic static function environmentProvider(): array— 715_713return'catch-all-eu', 'catch-all-eu?txt.jininny.com']"us environment' => ['us', 'catch-all'.'[EMAIL]'].'other environment defaults to us' = ('other'. 'catch-all'. *[EMAIL]']718'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j729'us environnent with.olus tag' a f'us'.S&S&AAASA&S58438protected functsion setuod: voidparentassetiod,protected functsion tearDomn@= vosal-7291—731Nockeny: closeowinntnenau idonanus nansont.Prauddon"publio function testIsForCurrentEn iots eentiithya chepe igota oxeetaina CdoniauboasonA console [STAGINGPlaygroundvdominnyoetcel zo.uuid, status, code, sender, recipient, created_at =8458184 Y00 4EROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8020a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericWHERE a.type LIKE "saskAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane, u.softohone-numbenORDER BY sns count DESC:select * fron teans where id = 1;SELECTCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,t.ouner_id FROM social_accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tnc->i: on t.id = u.tean_idWHERE U.tean_id = 1117 and sa.provider = 'hubspot:"SssM*sRilserwrnenorwathnnsioln.0dt4.h11.0154-00880115100800=11SELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 1d = 1117;select * fron users where id = 38249select * fron playbooks where id = $473;select * fron playbook categories where id = 43783;select * fron playbook categories where playbook_id = 5473select * fron crm fields where id = 659242:select * fron crn field values where crn field id = 659242;SELECT * FROM con Sield data 4d# JOIN crn_fields f ON fd.crn_field_id = f.id#JOTN actiivities a ON {d,activity 1d = a,idWHERE activity_id : 79933459# AND f.crn_provider_id = 'hs_activity_type';select * fron text relavs nhere created at > 12026-85-01*9select * fron activities where user_id IN (7160, 18608) and created_at > '2826-85-22"select * fron users where tean_1d = 1;D00%LTue 26 May 9:54:56+0.OTeneteihM Loogine• docker ps | grep php3. [IP_ADDRESS]:88-388/99ср, 64) :86- 3880/tcр,docker_lanp.Tnoto to ron une tosts trovon mo vocker conto nor Letme execurd trom usine dockeооскer exec oockertoupt php drosson test testslunit/serwicestnos u textkelayseiwicelestaphptunerow seoetanbere"annand contethurorsWARN No code coverage driver availablePAlL Tests\Unit\Services\Mail\TextRelayServiceTesinat to header vL= 8.06,Ican see the issue. The tests are failing because the GooglelService\Gaafl\Histor Message class doesn't exist. Let mecheck what the correct class name should be by looking at the actual Gmail service usageIcan see the correct class is coogleceatHistoryessageAdord . Let me tix the test by using the correct class namosToadd totiy hoth decurancae llat ma ted toniaea sillto fr nlllinetaoehe stooehO docker exec docker lamp 1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.phpAck anything (XOL)achotPunNoSkinAcceot all• OKtwodtur TasmeDeWhieht4 spad...
|
NULL
|
-7575547704359787912
|
NULL
|
visual_change
|
ocr
|
NULL
|
=PhpStormViewFV faVsco.s ~%o macteyCodeCarevelC Em =PhpStormViewFV faVsco.s ~%o macteyCodeCarevelC EmailActivityServiceTest.php8 InboySarviceTest.phpTextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallA!> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.pha© TeamOwnerServiceTest.phpCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils› @ Validatione vo€EnuminArravTrait.phoHeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê editorcontioE.enuE.env.circlacilcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallE .env.otheronu nroductiarE .env.production-euFonuasE onu asOOl-CTaytRalny Sarvien nor=custom.loglaravei.oSF- uiminnytblocalhost& HS_Jocal jiminny@localhostA console (EUnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:6USZaREBEB 8AccentResiectluse sminny conoonent queue constants,use Jiminny Models\TextRelayuse Jsminny Services Hara textrelaysemunce.use PHPunft\Franework Attributes Coversclass:luse PiPun Enanenork ,ttributes, betaprousden—403= A0=400—696=697[PHONE]01702-703784use Tests Testrase,use raalact onhiaee.luea Mockeny:Trownnetineeltmyt?anusausea..elneeit1=78=707=708=70924 %oee Thyte Sanusealner aytinde hettepublic static function environmentProvider(): array— 715_713return'catch-all-eu', 'catch-all-eu?txt.jininny.com']"us environment' => ['us', 'catch-all'.'[EMAIL]'].'other environment defaults to us' = ('other'. 'catch-all'. *[EMAIL]']718'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j729'us environnent with.olus tag' a f'us'.S&S&AAASA&S58438protected functsion setuod: voidparentassetiod,protected functsion tearDomn@= vosal-7291—731Nockeny: closeowinntnenau idonanus nansont.Prauddon"publio function testIsForCurrentEn iots eentiithya chepe igota oxeetaina CdoniauboasonA console [STAGINGPlaygroundvdominnyoetcel zo.uuid, status, code, sender, recipient, created_at =8458184 Y00 4EROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8020a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericWHERE a.type LIKE "saskAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane, u.softohone-numbenORDER BY sns count DESC:select * fron teans where id = 1;SELECTCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,t.ouner_id FROM social_accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tnc->i: on t.id = u.tean_idWHERE U.tean_id = 1117 and sa.provider = 'hubspot:"SssM*sRilserwrnenorwathnnsioln.0dt4.h11.0154-00880115100800=11SELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 1d = 1117;select * fron users where id = 38249select * fron playbooks where id = $473;select * fron playbook categories where id = 43783;select * fron playbook categories where playbook_id = 5473select * fron crm fields where id = 659242:select * fron crn field values where crn field id = 659242;SELECT * FROM con Sield data 4d# JOIN crn_fields f ON fd.crn_field_id = f.id#JOTN actiivities a ON {d,activity 1d = a,idWHERE activity_id : 79933459# AND f.crn_provider_id = 'hs_activity_type';select * fron text relavs nhere created at > 12026-85-01*9select * fron activities where user_id IN (7160, 18608) and created_at > '2826-85-22"select * fron users where tean_1d = 1;D00%LTue 26 May 9:54:56+0.OTeneteihM Loogine• docker ps | grep php3. [IP_ADDRESS]:88-388/99ср, 64) :86- 3880/tcр,docker_lanp.Tnoto to ron une tosts trovon mo vocker conto nor Letme execurd trom usine dockeооскer exec oockertoupt php drosson test testslunit/serwicestnos u textkelayseiwicelestaphptunerow seoetanbere"annand contethurorsWARN No code coverage driver availablePAlL Tests\Unit\Services\Mail\TextRelayServiceTesinat to header vL= 8.06,Ican see the issue. The tests are failing because the GooglelService\Gaafl\Histor Message class doesn't exist. Let mecheck what the correct class name should be by looking at the actual Gmail service usageIcan see the correct class is coogleceatHistoryessageAdord . Let me tix the test by using the correct class namosToadd totiy hoth decurancae llat ma ted toniaea sillto fr nlllinetaoehe stooehO docker exec docker lamp 1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.phpAck anything (XOL)achotPunNoSkinAcceot all• OKtwodtur TasmeDeWhieht4 spad...
|
71557
|
NULL
|
NULL
|
NULL
|
|
71558
|
2568
|
13
|
2026-05-26T06:54:56.872861+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778496872_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0100% L2Tue 26 May 9:54:56Nikolay Ivanov (Presenting, annotating)Galya Dimitrova0 Jw@ Foe you© Recert$ Sturred21 AррsQ SpacesJmimy 101a() Service-Desk( Jmimy NNew)1 Puudoem TeamProcessing Team• st KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ OperationaE3 Contiuenca2z TeamsNikolay IvanovNikolay NikolovPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL Reports0000218Epic~Type~keaby lo be Merged Dl wox tenRATKRAVAneliya AngelovaSteliyan GeorgievLukas KovalikB UstCo0 av24v Sprint (21 work tema)pgrade Ll lbraries • Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bier ooliIn Der0 -2r-30833ahnaeetodeteIn Devа л2oиsn "=®MCP > Enatie uners to get a ist oforanenguer oruanCode Review20 n ***= OFormsC Components% Development ½ CodeO Securty© ReleasesA Deployments8 Archived work itemsE DocяEOo0eFONOFIANOOA 1MCP > Enable the Al to know00s 200000 W0In GAWND ASURCAACEKedoy lo were₴ л-л0n |18Д ...=AJ Panorama for Call Scoring in ODСитомАНОдурСокеаDeployedВ л2ом1|OS A ..= tцньозрок оранки фиNcouticorneCLATFORM STARILETOC Jr-2072s1S •= 1rompts is deleted but is uned in AJleportAJREFORTSУeрioтedД л-20еге25 &**=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 7:05...
|
NULL
|
1433677288381713028
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0100% L2Tue 26 May 9:54:56Nikolay Ivanov (Presenting, annotating)Galya Dimitrova0 Jw@ Foe you© Recert$ Sturred21 AррsQ SpacesJmimy 101a() Service-Desk( Jmimy NNew)1 Puudoem TeamProcessing Team• st KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ OperationaE3 Contiuenca2z TeamsNikolay IvanovNikolay NikolovPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL Reports0000218Epic~Type~keaby lo be Merged Dl wox tenRATKRAVAneliya AngelovaSteliyan GeorgievLukas KovalikB UstCo0 av24v Sprint (21 work tema)pgrade Ll lbraries • Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bier ooliIn Der0 -2r-30833ahnaeetodeteIn Devа л2oиsn "=®MCP > Enatie uners to get a ist oforanenguer oruanCode Review20 n ***= OFormsC Components% Development ½ CodeO Securty© ReleasesA Deployments8 Archived work itemsE DocяEOo0eFONOFIANOOA 1MCP > Enable the Al to know00s 200000 W0In GAWND ASURCAACEKedoy lo were₴ л-л0n |18Д ...=AJ Panorama for Call Scoring in ODСитомАНОдурСокеаDeployedВ л2ом1|OS A ..= tцньозрок оранки фиNcouticorneCLATFORM STARILETOC Jr-2072s1S •= 1rompts is deleted but is uned in AJleportAJREFORTSУeрioтedД л-20еге25 &**=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 7:05...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71556
|
2568
|
12
|
2026-05-26T06:54:54.537610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778494537_m1.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileToolsWindow‹>0100% <478•Tue 26 Ma FirefoxFileToolsWindow‹>0100% <478•Tue 26 May 9:54:54Edit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Salya Dimitrova0-Jwт@ Foe you© Recere$ strred21 АрряQ SpacesJmimy 101a(9 Service-Desk( Jmimy NNew)1 E Puudoem TeamProcessing Team• st KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ OperationaE3 Contiuenca2z TeamsNikolay IvanovM ISSIE GOOOSPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsQ Search board |0000218 Еріс -v keaby lo be Merged Dl wox tenRASTKRAVNikolay NikolovAneliya AngelovaSteliyan GeorgievLukas KovalikE CalendarType~L ReportsTesting BoardB Ust2 Forms C Componerts % Development %, CodeO Security ReleasesA Deployments8 Archived work itemsE Docя8 ShortcutsCooav24EOo0eFONOFIANOv Sprint (21 work hema)porade Ll lbraries - Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bir ooliIn DerД -2-30833ahnaeettodeteIn Devа л2oиsn "=®MCP > Enatie users to get a ist oforaneng uer ohanCode Review20 n ***= OOA 1MCP > Enable the Al to knowC0us eooub weIn OAWND ASURCAACEKedoy lo were8л-180n|18Д •=AJ Panorama for Call Scoring in ODСитомАНодурсокеаDeployedВ л2ом1|OS A ..= tцньозрок орание фиNccoutticorneCLATFORM STARILETOC Jr-2072srompts is deleted but is uned in AJleportAJREPORTSУeрioтedД л-20еге25 Д **=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 7:02...
|
NULL
|
5916685282288700678
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileToolsWindow‹>0100% <478•Tue 26 Ma FirefoxFileToolsWindow‹>0100% <478•Tue 26 May 9:54:54Edit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Salya Dimitrova0-Jwт@ Foe you© Recere$ strred21 АрряQ SpacesJmimy 101a(9 Service-Desk( Jmimy NNew)1 E Puudoem TeamProcessing Team• st KanbanEnterprise Stabllity Issues ®Capture Team= More spacesE Finers( Dasnbcarss€ OperationaE3 Contiuenca2z TeamsNikolay IvanovM ISSIE GOOOSPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsQ Search board |0000218 Еріс -v keaby lo be Merged Dl wox tenRASTKRAVNikolay NikolovAneliya AngelovaSteliyan GeorgievLukas KovalikE CalendarType~L ReportsTesting BoardB Ust2 Forms C Componerts % Development %, CodeO Security ReleasesA Deployments8 Archived work itemsE Docя8 ShortcutsCooav24EOo0eFONOFIANOv Sprint (21 work hema)porade Ll lbraries - Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan ăng bir ooliIn DerД -2-30833ahnaeettodeteIn Devа л2oиsn "=®MCP > Enatie users to get a ist oforaneng uer ohanCode Review20 n ***= OOA 1MCP > Enable the Al to knowC0us eooub weIn OAWND ASURCAACEKedoy lo were8л-180n|18Д •=AJ Panorama for Call Scoring in ODСитомАНодурсокеаDeployedВ л2ом1|OS A ..= tцньозрок орание фиNccoutticorneCLATFORM STARILETOC Jr-2072srompts is deleted but is uned in AJleportAJREPORTSУeрioтedД л-20еге25 Д **=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 7:02...
|
71555
|
NULL
|
NULL
|
NULL
|
|
71557
|
2569
|
5
|
2026-05-26T06:54:54.528827+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778494528_m2.jpg...
|
PhpStorm
|
faVsco.js – TextRelayServiceTest.php
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Fircrox••0.& Login - SonarQube CloudWhat's Fircrox••0.& Login - SonarQube CloudWhat's New in Firefox 151 - Firefe) New Tab(JY-20814) Release unused Tv. X— New 136FoiLc.WVindowdudsslon.nerc.owseot-20o1412000) JIMINNY@ For you© Recent# Starred8 AppsQ, SpacesJiminny (New) + ...1WD Platform TeamI Capture TeamEnterprise Stability I...ID Processing TeamI1 SE Kanbanl( Service-Desk= More spaces= FiltersCB Dashboards© Operations8 ConfluenceHTeameWeuctomice sidenanQ Search |+ CreateSpaces / Jiminny (New) / 4 sy-1117 / [ Jy-20814Release unused Twilio numbers on Production~ Descriptioncurrentiy there are hundreas of Twilio numbers which are not used ov any actuve Voice usenand we are paying for them. We are paying for 1100 numbers and using 565 according to thedb. 34 of which are Jiminny users. This results in oaving $5k for recordina 500 hours of calls.Please release all unused Twilio numbers with a command whichs1. List all Twilio subaccounts2. For every subaccount aet all active numbers from Twilid3. If this number is not used by any Jiminny user, release it from TwilloSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityCommentsHistoryWork logAdd a comment…Who is working on this….?Status update….Thanks...Pro tin• crace M to commenlAsk Rovo1LabelsNoneNoneNonePrioritvSprintiladndalldladdullnUTextRelayServiceTest100% 142o• luc coMuy 3.04.0+0.om.logSol CU4 SF [iminny@localhost)A HS Jocal (jiminny@localhost)A console (PROD] x# Conbaie SIAOiNGSELECT id,uuid, status, code, sender, recipient, created_at =045 A1 A41 X66 ACascadeO Text Relay Loggingspor text relaysWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c8028a2c656'):# [PASSWORD_DOTS]SELECT DISTINCT u.id, v.enail, u.nane, v.softphone_number, COUNT(a.id) as sas_countFROM users uINNER JOIN activities a ON U.id =.user_idWHERE a.type LIKE "saskAND a.created_at › DATE_SUB(NON(), INTERVAL 30 DAY)GROUP BY u.id, u.eaail.UoononnuohORDER BY sns_count DESC;SeleCs tnPa wNeioaselect * fron roles:SELECICONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,thonner so EroM sochall accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tancowon the ttAaWHERE U.tean_1d = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities AHERE UUEd_tO_bin( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM crn_configurations WHERESELECT * FROM teans WHERE id = 1117;select * fron users where id = 30249;select * fron playbooks where id = 5473;select * fron playbook_categories where id = 43783;select * fron playbook_categories where playbook_id = 5473;select x fron crn_fields where id = 659242;select x fron crn_field_values where crn_field_id = 659242;SELECT * FROM crn_field_data fd# JOIN crn_fields f ON fd.crn_field_id = f.id# JOIN activities a ON fd.activity_id = a.idWHERE activity_id = 79933459# AND f.crn_provider_id = "hs_activity_type'select * fron text_relays nhere created_at > ^2026-05-01';select * fron activities where user_id IN (7168, 18608) and created_at > '2026-05-22'select * fron usens were teamsioeefails. Run it fox it and keep runnig untill all arew passingJu run the tests to seo what's tailing and tx the issues until all tests oass.onh, coumond noc round. ohmnlach ohioho notfounLet me check it we're in a Docker environment or it PHP is available through Docker:docker ps I grep phpi ryp740370364,ekr. g, U5-Ca 12 enutes5- .8./3.8:889/388/g9:р, (tV=10-=3860/tcp,I need to run the tests through the Docker container. Let me execute them using Docker:docker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wac• docker exec docker lanp 1 php artisan test tests/Unit/Services/Ma1l/TextRelayServiceTest-phpIcan see the issue. The tests are failing becau + Command Awaiting Approval IstorMessape class doesn't exist. Let meAsk anything (XOL)achotAccept allytwodtur Tasmeettihise...
|
NULL
|
-6004213702001882512
|
NULL
|
click
|
ocr
|
NULL
|
Fircrox••0.& Login - SonarQube CloudWhat's Fircrox••0.& Login - SonarQube CloudWhat's New in Firefox 151 - Firefe) New Tab(JY-20814) Release unused Tv. X— New 136FoiLc.WVindowdudsslon.nerc.owseot-20o1412000) JIMINNY@ For you© Recent# Starred8 AppsQ, SpacesJiminny (New) + ...1WD Platform TeamI Capture TeamEnterprise Stability I...ID Processing TeamI1 SE Kanbanl( Service-Desk= More spaces= FiltersCB Dashboards© Operations8 ConfluenceHTeameWeuctomice sidenanQ Search |+ CreateSpaces / Jiminny (New) / 4 sy-1117 / [ Jy-20814Release unused Twilio numbers on Production~ Descriptioncurrentiy there are hundreas of Twilio numbers which are not used ov any actuve Voice usenand we are paying for them. We are paying for 1100 numbers and using 565 according to thedb. 34 of which are Jiminny users. This results in oaving $5k for recordina 500 hours of calls.Please release all unused Twilio numbers with a command whichs1. List all Twilio subaccounts2. For every subaccount aet all active numbers from Twilid3. If this number is not used by any Jiminny user, release it from TwilloSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityCommentsHistoryWork logAdd a comment…Who is working on this….?Status update….Thanks...Pro tin• crace M to commenlAsk Rovo1LabelsNoneNoneNonePrioritvSprintiladndalldladdullnUTextRelayServiceTest100% 142o• luc coMuy 3.04.0+0.om.logSol CU4 SF [iminny@localhost)A HS Jocal (jiminny@localhost)A console (PROD] x# Conbaie SIAOiNGSELECT id,uuid, status, code, sender, recipient, created_at =045 A1 A41 X66 ACascadeO Text Relay Loggingspor text relaysWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c8028a2c656'):# [PASSWORD_DOTS]SELECT DISTINCT u.id, v.enail, u.nane, v.softphone_number, COUNT(a.id) as sas_countFROM users uINNER JOIN activities a ON U.id =.user_idWHERE a.type LIKE "saskAND a.created_at › DATE_SUB(NON(), INTERVAL 30 DAY)GROUP BY u.id, u.eaail.UoononnuohORDER BY sns_count DESC;SeleCs tnPa wNeioaselect * fron roles:SELECICONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,thonner so EroM sochall accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tancowon the ttAaWHERE U.tean_1d = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities AHERE UUEd_tO_bin( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM crn_configurations WHERESELECT * FROM teans WHERE id = 1117;select * fron users where id = 30249;select * fron playbooks where id = 5473;select * fron playbook_categories where id = 43783;select * fron playbook_categories where playbook_id = 5473;select x fron crn_fields where id = 659242;select x fron crn_field_values where crn_field_id = 659242;SELECT * FROM crn_field_data fd# JOIN crn_fields f ON fd.crn_field_id = f.id# JOIN activities a ON fd.activity_id = a.idWHERE activity_id = 79933459# AND f.crn_provider_id = "hs_activity_type'select * fron text_relays nhere created_at > ^2026-05-01';select * fron activities where user_id IN (7168, 18608) and created_at > '2026-05-22'select * fron usens were teamsioeefails. Run it fox it and keep runnig untill all arew passingJu run the tests to seo what's tailing and tx the issues until all tests oass.onh, coumond noc round. ohmnlach ohioho notfounLet me check it we're in a Docker environment or it PHP is available through Docker:docker ps I grep phpi ryp740370364,ekr. g, U5-Ca 12 enutes5- .8./3.8:889/388/g9:р, (tV=10-=3860/tcp,I need to run the tests through the Docker container. Let me execute them using Docker:docker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wac• docker exec docker lanp 1 php artisan test tests/Unit/Services/Ma1l/TextRelayServiceTest-phpIcan see the issue. The tests are failing becau + Command Awaiting Approval IstorMessape class doesn't exist. Let meAsk anything (XOL)achotAccept allytwodtur Tasmeettihise...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71555
|
2568
|
11
|
2026-05-26T06:54:51.295992+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778491295_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8314070671698820245
|
419251463169309188
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined
FirefoxFileToolsWindow‹>0100% <478• Tue 26 May 9:54:50Edit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Galya Dimitrova0 -mw@ Foe you© Recere$ strred21 АрряQ SpacesJmimy 101a(9 Service-Desk( Jmimy NNew)1 E Puudoem TeamProcessing TeamC SE KanbanEnterprise Stabllity Issues ®Capture TeamE FinersC DandOperation2z TeamsNikolay IvanovMIUIM ISSIE GOOOSNikolay NikolovAneliya AngelovaSteliyan GeorgievPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintsE CalendarL ReportsTesting BoardB Ust2 Forms C Componerts % Development %, CodeO Security ReleasesA Deployments8 Archived work itemsE Docs8 ShortcutsQ Search board |0000218 Еріс -TypevRASTKRAVCooav24EOo0eFONOFIANOLukas Kovalikv Sprint (21 work bemal)|zade Ll lbraries - Mayi***=CENCEV 2MCP > Enabie uners to get a lat ofcan tng bit ootIn DewД 27-20033In Devа лгоизMCP > Enatie users to get a ist oforasenguer oranCode Review20 П ****=MCP > Enable the Al to know00s 200000 W0In GAWND ASURGAAOEKedoy lo were₴ л-лоn |18 Д ..AJ Panorama for Call Scoring in OD|DeployedВ л2ом1|OS A ..= tцньозрок орание фиNccoutnicoreCLATFORM STARILETOC Jr-2072s15 7000=rompts is deleted but is uned in AJbeportAJREFORTSД л-20еге25 Д **=Claude$19:54 AM | Daily - Platform31PS6:59...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71554
|
2569
|
4
|
2026-05-26T06:54:47.897803+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778487897_m2.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
Mute Steliyan Georgiev's microphone
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.07342374},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.69498,"top":1.0,"width":0.019448139,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.70827794,"top":1.0,"width":0.0021609042,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Steliyan Georgiev to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Steliyan Georgiev's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Steliyan Georgiev","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-963219685829051683
|
-7142171918956045512
|
idle
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
Mute Steliyan Georgiev's microphone
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined
Fircrox& Login - SonarQube CloudWhat's New in Firefox 151 - Firefe) New Tab(JY-20814) Release unused Tv. X— New 136FoiLc.WVindowdudsslon.nerc.owseot-20o1412000) JIMINNY@ For you© Recent# Starred8 AppsQ, SpacesJiminny (New) + ...1WD Platform TeamI Capture TeamEnterprise Stability I...ID Processing TeamI1 SE Kanbanl( Service-Desk= More spaces= FiltersCB Dashboards© Operations8 ConfluenceHTeameWeuctomice sidenanQ Search |+ CreateSpaces / Jiminny (New) / 4 sy-1117 / [ Jy-20814Release unused Twilio numbers on Production~ Descriptioncurrentiy there are hundreas of Twilio numbers which are not used ov any actuve Voice usenand we are paying for them. We are paying for 1100 numbers and using 565 according to thedb. 34 of which are Jiminny users. This results in oaving $5k for recordina 500 hours of calls.Please release all unused Twilio numbers with a command whichs1. List all Twilio subaccounts2. For every subaccount aet all active numbers from Twilid3. If this number is not used by any Jiminny user, release it from TwilloSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityCommentsHistoryWork logAdd a comment…Who is working on this..?Status update….Thanks...Pro tin• crace M to commenlAsk RovoUTextRelayServiceTest100% 142D 00• luc coMuy 3:04.44+0.om.logSol CU4 SF [iminny@localhost)A HS Jocal (jiminny@localhost)A console (PROD] x# Conbaie SIAOiNGSELECT id,uuid, status, code, sender, recipient, created_at =045 A1 A41 X66 ACascadeO Text Relay Logging1LabelsNoneNoneNonePrioritvSprintiladndalldladdullnspor text relaysWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c8028a2c656'):# [PASSWORD_DOTS]SELECT DISTINCT u.id, v.enail, u.nane, v.softphone_number, COUNT(a.id) as sas_countFROM users uINNER JOIN activities a ON U.id =.user_idWHERE a.type LIKE "saskAND a.created_at › DATE_SUB(NON(), INTERVAL 30 DAY)GROUP BY u.id, u.eaail.UoononnuohORDER BY sns_count DESC;SeleCs tnPa wNeioaselect * fron roles:SELECCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,thonner so EroM sochall accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tancowon the ttAaWHERE U.tean_1d = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities AHERE UUEd_tO_bin( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM crn_configurations WHERESELECT * FROM teans WHERE id = 1117;select * fron users where id = 30249;select * fron playbooks where id = 5473;select * fron playbook_categories where id = 43783;select * fron playbook_categories where playbook_id = 5473;select x fron crn_fields where id = 659242;select x fron crn_field_values where crn_field_id = 659242;SELECT * FROM crn_field_data fd# JOIN crn_fields f ON fd.crn_field_id = f.id# JOIN activities a ON fd.activity_id = a.idWHERE activity_id = 79933459# AND f.crn_provider_id = "hs_activity_type'select * fron text_relays nhere created_at > ^2026-05-01';select * fron activities where user_id IN (7168, 18608) and created_at > '2026-05-22'select * fron usens were teamsioeefails. Run it fox it and keep runnig untill all arew passingJu run the tests to seo what's tailing and tx the issues until all tests oass.cestssens/skev/c1s/Y//Te S layservisetest- pnp -verboseonh, coumond noc round. ohmnlach ohioho notfounLet me check it we're in a Docker environment or it PHP is available through Docker:docker ps I grep phpi ryp740370364,ekr. g, U5-Ca 12 enutes5- .8./3.8:889/388/g9:р, (tV=10-=3860/tcp,I need to run the tests through the Docker container. Let me execute them using Docker:docker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wac• docker exec docker lanp 1 php artisan test tests/Unit/Services/Ma1l/TextRelayServiceTest-phpIcan see the issue. The tests are failing becau * Command Awaiting Approval IstorMessape class doesn't exist. Let meAsk anything (XOL)achotAccept all• Oytwodtur Tasmeettihise...
|
71549
|
NULL
|
NULL
|
NULL
|
|
71553
|
2568
|
10
|
2026-05-26T06:54:33.048779+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778473048_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.8684028,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8989583,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9295139,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
5799067444809510321
|
1572314804776655416
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined
FirefoxFileToolsWindow‹$0100% <478•Tue 26 May 9:54:32Edit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Galya Dimitrova0 Jw@ Foe you© Recere$ Surred21 АрриQ SpacesJmimy 101a)( Service-Desk( Jminry Niew)1 C Plrdoem TeamProcessing TeamC SE KanbanErterprise Stabllity Issues ®E Capture Team= More spaces# Finers( Dntbcarase Operationa23 Contuenca22 TeamsNikolay IvanovNikolay NikolovAneliya AngelovaSteliyan GeorgievPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprintaE CalendarL ReportsTesting Board |B Ust* Forms C Componerts % Development % CodeO Security ReleasesA Deployments8 Archived work itemsE Docs8 Shortcuts0000218 Еріс -Typevy keaбу 10 be Merged 0l wox TenBATRAVoo0 sv24FONOFIANOLukas KovalikWD ASURCAACEKedoy lo were₴3 л-л0n|18 Д .v Sprint (11 work hemal|porade Ll lbraries - Mayi***=CENDEV 2MCP > Enabie uners to get a lat ofcan ăng bir ooliIn DewД 2л-20в33ahndeettodeteIn Devа л2oиsMCP > Enatie users to get a ist oforaseng uer ohanASATEOCOSIOCode Review20 n ***= OOA 1MCP > Enable The Al to knowIn OAAJ Panorama for Call Scoring in ODСИЛОМАНОДУРССкЕаDeployedВ л-20м1|85A..= 0сниозрок оралиие фиNccoutticorneCLATFONM STARILETOC Jr-2072s15 *=1wrompts is deleted but is uned in AJleportAJREFORTSУepioтeoД л-20еге|25 Д **=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 6:41...
|
71552
|
NULL
|
NULL
|
NULL
|
|
71552
|
2568
|
9
|
2026-05-26T06:54:29.940684+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778469940_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8314070671698820245
|
419251463169309188
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Zoom in
Open in new window
Enter Full Screen
Galya Dimitrova
Nikolay Ivanov
Nikolay Nikolov
Aneliya Angelova
Steliyan Georgiev
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined
FirefoxFileToolsWindow‹$0100% C8•Tue 26 May 9:54:29Edit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Galya Dimitroval@ For you© Recere$ Starred22 АорsQ SpacesD Jeinry lowa)Лесет|() Service-Desk( Jeiney (New)10 Piudoem TeaeProcessing TeamC SE KanbanErterprise Stabllity Issues ®E Capture Team= Finers(B Ontbcarase OperationaE3 Contuenca22 TeamsNikolay IvanovNikolay NikolovAneliya AngelovaSteliyan GeorgievPlatform Team 8.© Summary% Timeline8B Backiog0D Active sprinta8 CalendarL Reports• Testing BoardB List* Forms C Componerts % Development %, CodeO Securty ReleasesA Deployments8 Archived work itemsE Docяd Shertcuts0000818 Еріс -Type~Quick fiters ~v keady 1o be Merged 0 wox ten.CAOTOROV900124EOOASFONOYIANOLukas-Kovalikv Sprint (21 work nemalREACY FOR DEV 1crade bE loraries - Mayl1 ****=©ENDEV 2MCP > Enabie uners to get a lat ofcam eng bier ooliayIn DerД 2м30в33In Devа мaоизMCP > Enatie users to get a iut of0anen boroherCode ReviewOA TMCP > Enabie The Al to knowIn QAPO ACCEPTANCEUpgrade to PHP 8.5NO ASURGAACEKedoy lowereЕ3 л-1800118 Д .. 30DEPLOY 16AJ Panorama for Call Scoring in OD|СИЛОМАНОДУEСОКDeployed( Jy-2031aa..= 1цньсоскк оротне фcoturincorCRATFCRM ETARBLETDC JY-2022515 *..=1wht meweewevrompts is deleted but ls wned in AJAJIREFORTSDepioyeoД л-асоте25 Д**=Nodty the uner if a SS la deleted9:54 AM | Daily - Platform• 6:38...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71551
|
2568
|
8
|
2026-05-26T06:54:26.873674+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778466873_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.078819446,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"bounds":{"left":0.10659722,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.13715278,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.23715279,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.26493055,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.29548612,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.3951389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":7,"bounds":{"left":0.42291668,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.45347223,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.553125,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.58090276,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.61145836,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Steliyan Georgiev to your main screen","depth":7,"bounds":{"left":0.7114583,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.7392361,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Steliyan Georgiev","depth":7,"bounds":{"left":0.76979166,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.8684028,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8989583,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9295139,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1118629639290866694
|
351817860988525368
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Steliyan Georgiev joined
FirefoxFileProfilesToolsWindow‹$0100% <47Tue 26 May 9:54:26Edit→ViewHistoryBookmarksCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)=Galya Dimitroval@ For you© Éscетde Starred8: Aces22 Spaces[_eninny 1019)() Service-DeusCa irsiny (Ven)1E Piwtorm TeaeProcessing Team• SE Kanban© Ernerpece Srabilty Isvoes eDD Cipture TeamE Fiters(B Durosern2 OpeatonlE contuendT8 Asseс1a TransNikolay IvanovPlatform Team 2.© Summary% Timatine88 BAckiogШ Астия чоня0800818 Epic• Ruady To Be Merged I1 wok teni|NASTLVNikolay NikolovAneliya AngelovaSteliyan GeorgievLukas-KovalikE Calencar12 Reports• Testino Bosro |Type~z Forina E Componerts % Develogmenl %, CodeO Securty & ReisasesDepleymentsArchived wock tors0 Dоcя8 ghortcuts@ Siack intogtUpoeowebaReady To Meroe8 л-таг|. •= 0de be lanes " Mayl1 **=DNCEY 2MCP » Enabie users to get a lit ofcats and ther cetaisInDeД лгкгaceptey roadonwe0 гнаняМСР > Eлatseaees to pet a ist ofdeais and their detarsCode Revien12 лe20кт2. = OMCP > Enable the Al to Nromdetars abost the wsenIn GA•=•OeployesD 20м1о .= 0DHuoSpoi] Optmase CRM(KATO SBTа0. JY-20725.^**= &towteunereenoeeromepts in deitted but in vsed in AJAeURST25 • = C9:54 AM | Daily - Platform• 6:35...
|
71550
|
NULL
|
NULL
|
NULL
|
|
71550
|
2568
|
7
|
2026-05-26T06:54:23.654941+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778463654_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Audio settings
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.078819446,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"bounds":{"left":0.10659722,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.13715278,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.23715279,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.26493055,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.29548612,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.3951389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":7,"bounds":{"left":0.42291668,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.45347223,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.553125,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.58090276,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.61145836,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Steliyan Georgiev to your main screen","depth":7,"bounds":{"left":0.7114583,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.7392361,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Steliyan Georgiev","depth":7,"bounds":{"left":0.76979166,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.8684028,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8989583,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9295139,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Audio settings","depth":4,"bounds":{"left":0.3246528,"top":0.9027778,"width":0.054166667,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
6962374119628363960
|
351536403191683896
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Audio settings
Steliyan Georgiev joined
FirefoxFileToolsWindowEdit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)+Galya DimitrovalNikolay Nikolov0 Jwт@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Desk© Summary§ QuevesTeam Priorty0 Al open tickets§ Unassigned ticketsE Support team QueueQ Raised by meE Assigned to meE Service requests10 Purtorm teamO Procesting teamSite reilability teamO New teotures requestsO IntoSec issuesReady for OustomerE Resolved ticketsF Vieu al quevesa) Service requestsA Incibertsll ReporsQ Knowiedge Base& CustomersO CharceisEmal logs9:54 AM | Daily - Platform+-Nikolay IvanovAUM ISS/E 60005Spaces / Service-Desk / QuevesPlatform teamQ Search work1 work temRequest typev Statvs ~KeyMore thersPriority levelPWhokTurn on microphone (g + d)Lộ3Aneliya Angelova"yeykye+ CresceStayan Tomov‹>0100% C8• Tue 26 May 9:54:23=Steliyan GeorgievLukas-KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 6:31...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71549
|
2569
|
3
|
2026-05-26T06:54:16.841983+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778456841_m2.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn on microphone (⌘ + d)
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.07342374},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.69498,"top":1.0,"width":0.019448139,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.70827794,"top":1.0,"width":0.0021609042,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Steliyan Georgiev to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Steliyan Georgiev","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Turn on microphone (⌘ + d)","depth":4,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3805466626674719277
|
1495450708543789848
|
click
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn on microphone (⌘ + d)
Steliyan Georgiev joined
Fircrox& Login - SonarQube CloudWhat's New in Firefox 151 - Firefe) New Tab(JY-20814) Release unused Tv. X— New 136FoiLc.WVindowdudsslon.nerc.owseot-20o1412000) JIMINNY@ For you© Recent# Starred8 AppsQ, SpacesJiminny (New) + ...1WD Platform TeamI Capture TeamEnterprise Stability I...ID Processing TeamI1 SE Kanbanl( Service-Desk= More spaces= FiltersCB Dashboards© Operations8 ConfluenceHTeameWeuctomice sidenanQ Search |+ CreateSpaces / Jiminny (New) / 4 sy-1117 / [ Jy-20814Release unused Twilio numbers on Production~ Descriptioncurrentiy there are hundreas of Twilio numbers which are not used ov any actuve Voice usenand we are paying for them. We are paying for 1100 numbers and using 565 according to thedb. 34 of which are Jiminny users. This results in oaving $5k for recordina 500 hours of calls.Please release all unused Twilio numbers with a command whichs1. List all Twilio subaccounts2. For every subaccount aet all active numbers from Twilid3. If this number is not used by any Jiminny user, release it from TwilloSubtasksAdd subtaskLinked work itemsAdd linked work itemActivityCommentsHistoryWork logAdd a comment…Who is working on this..?Status update….Thanks...Pro tin• crace M to commenlAsk RovoUTextRelayServiceTest100% 142D 0o• luc coMuy 3.04.10+0.om.logSol CU4 SF [iminny@localhost)A HS Jocal (jiminny@localhost)A console (PROD] x# Conbaie SIAOiNGSELECT id,uuid, status, code, sender, recipient, created_at =045 A1 A41 X66 ACascadeO Text Relay Logging1LabelsNoneNoneNonePrioritvSprintiladndalldladdullnspor text relaysWHERE uuid = uuid_to_bin('8626141c-27a6-4d8c-aff8-7c8028a2c656'):# [PASSWORD_DOTS]SELECT DISTINCT u.id, v.enail, u.nane, v.softphone_number, COUNT(a.id) as sas_countFROM users uINNER JOIN activities a ON U.id =.user_idWHERE a.type LIKE "saskAND a.created_at › DATE_SUB(NON(), INTERVAL 30 DAY)GROUP BY u.id, u.eaail.UoononnuohORDER BY sns_count DESC;SeleCs tnPa wNeioaselect * fron roles:SELECCONCAT(u.id, CASE WHEN U.id = t.ouner_id THEN ' (ouner)' ELSE "' END) AS user_1d,u.enasa.*,thonner so EroM sochall accounts seJOIN users u on u.id = sa.sociable_idJOIN teans tancowon the ttAaWHERE U.tean_1d = 1117 and sa.provider = 'hubspot:FSELECT * FROM activities AHERE UUEd_tO_bin( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM actávities MHERE Uuid_to_bin('[CREDIT_CARD]-9274-4f4da208185c*) = uuSSELECT * FROM crn_configurations WHERESELECT * FROM teans WHERE id = 1117;select * fron users where id = 30249;select * fron playbooks where id = 5473;select * fron playbook_categories where id = 43783;select * fron playbook_categories where playbook_id = 5473;select x fron crn_fields where id = 659242;select x fron crn_field_values where crn_field_id = 659242;SELECT * FROM crn_field_data fd# JOIN crn_fields f ON fd.crn_field_id = f.id# JOIN activities a ON fd.activity_id = a.idWHERE activity_id = 79933459# AND f.crn_provider_id = "hs_activity_type'select * fron text_relays nhere created_at > ^2026-05-01';select * fron activities where user_id IN (7168, 18608) and created_at > '2026-05-22'select * fron usens were teamsioeefails. Run it fox it and keep runnig untill all arew passingJu run the tests to seo what's tailing and tx the issues until all tests oass.cestssens/skev/c1s/Y//Te S layservisetest- pnp -verboseonh, coumond noc round. ohmnlach ohioho notfounLet me check it we're in a Docker environment or it PHP is available through Docker:docker ps I grep phpi ryp740370364,ekr. g, U5-Ca 12 enutes5- .8./3.8:889/388/g9:р, (tV=10-=3860/tcp,I need to run the tests through the Docker container. Let me execute them using Docker:docker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wac• docker exec docker lanp 1 php artisan test tests/Unit/Services/Ma1l/TextRelayServiceTest-phpIcan see the issue. The tests are failing becau * Command Awaiting Approval IstorMessape class doesn't exist. Let meAsk anything (XOL)achotAccept all• Oytwodtur Tasmeettihise...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71548
|
2568
|
6
|
2026-05-26T06:54:11.435637+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778451435_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn on microphone (⌘ + d)
Steliyan Georgiev joined...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.8871528,"top":0.08944444,"width":0.040625,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7","depth":16,"bounds":{"left":0.9149306,"top":0.101111114,"width":0.004513889,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.078819446,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"bounds":{"left":0.10659722,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.13715278,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053819444,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.23715279,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.26493055,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.29548612,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.21215278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.3951389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Nikolov's microphone","depth":7,"bounds":{"left":0.42291668,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.45347223,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.3704861,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.553125,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.58090276,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.61145836,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.528125,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Steliyan Georgiev to your main screen","depth":7,"bounds":{"left":0.7114583,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.7392361,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Steliyan Georgiev","depth":7,"bounds":{"left":0.76979166,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":11,"bounds":{"left":0.68645835,"top":0.3122222,"width":0.06909722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.8684028,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8989583,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9295139,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.84479165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9684028,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:54","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.022569444,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07638889,"top":0.9444444,"width":0.017361112,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.11111111,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.11111111,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Turn on microphone (⌘ + d)","depth":4,"bounds":{"left":0.3125,"top":0.9027778,"width":0.105902776,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Steliyan Georgiev joined","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3805466626674719277
|
1495450708543789848
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
7
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
Mute Nikolay Nikolov's microphone
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
Pin Steliyan Georgiev to your main screen
You can't unmute someone else
More options for Steliyan Georgiev
Steliyan Georgiev
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:54
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Turn on microphone (⌘ + d)
Steliyan Georgiev joined
FirefoxFileToolsWindowEdit→ViewHistoryBookmarksProfilesCHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)+Galya DimitrovaNikolay Nikolov© Jw@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Desk© Summary§ QuevesTeam Priorty0 Al open tickets§ Unassigned ticketsE Support team Queue© Raised by melE Assigned to meE Service requests10 Purtorm teamO Procesting teamSite reilability teamO New teotures requestsO IntoSec issuesReady for OustomerE Resolved ticketsF Vieu al quevesa) Service requestsA Incibertsll ReporsQ Knowiedge Base& CustomersO CharceisEmal logs9:54 AM | Daily - PlatformNikolay IvanovSpaces / Service-Desk / QuevesPlatform teamQ Search workKeyRequest typeMore thersPriority levelPWhokTumn on microphone (88 + d)Lộ3Aneliya Angelova"yeykye+ CresceStoyan Tomov‹>0100% C8• Tue 26 May 9:54:11=Steliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 6:19....
|
71547
|
NULL
|
NULL
|
NULL
|
|
71547
|
2568
|
5
|
2026-05-26T06:54:09.186721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778449186_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 Jwт@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)() Service-Desk© Summary§ QuevesTeam Priorty0 Al open tickets§ Unassigned ticketsE Support team Queue© Raised by melE Assigned to meE Service requests10 Purtorm teamO Procesting teamSite reilability teamO New teotures requestsO IntoSec issuesReady for OustomerE Resolved ticketsF Vieu al quevesoService requestsA Incibertsll ReporsQ Knowiedge Base& CustomersO CharceisEmal lognSpaces / Service-Desk / QuevesPlatform teamQ Search workKeyRequest type StrsMore thersPriority levelP2 Medium"yeykye9:54 AM | Daily - PlatformLộ3+ CresceStayan Tomov100% 12Tue 26 May 9:54:08Steliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 6:17...
|
NULL
|
4216767220216685752
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 Jwт@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)() Service-Desk© Summary§ QuevesTeam Priorty0 Al open tickets§ Unassigned ticketsE Support team Queue© Raised by melE Assigned to meE Service requests10 Purtorm teamO Procesting teamSite reilability teamO New teotures requestsO IntoSec issuesReady for OustomerE Resolved ticketsF Vieu al quevesoService requestsA Incibertsll ReporsQ Knowiedge Base& CustomersO CharceisEmal lognSpaces / Service-Desk / QuevesPlatform teamQ Search workKeyRequest type StrsMore thersPriority levelP2 Medium"yeykye9:54 AM | Daily - PlatformLộ3+ CresceStayan Tomov100% 12Tue 26 May 9:54:08Steliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 6:17...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71546
|
2568
|
4
|
2026-05-26T06:53:50.007264+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778430007_m1.jpg...
|
Firefox
|
[JY-20814] Release unused Twilio numbers on Produc [JY-20814] Release unused Twilio numbers on Production - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/JY-20814?issueKey=JY- jiminny.atlassian.net/browse/JY-20814?issueKey=JY-20814&subProduct=jira-software...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
[JY-20814] Release unused Twilio numbers on Production - Jira
[JY-20814] Release unused Twilio numbers on Production - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
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
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
SE Kanban
SE Kanban
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...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"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,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"What's New in Firefox 151 — Firefox.com","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"What's New in Firefox 151 — Firefox.com","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20814] Release unused Twilio numbers on Production - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[JY-20814] Release unused Twilio numbers on Production - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":4,"on_screen":true,"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":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"on_screen":true,"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":5,"on_screen":true,"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":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"on_screen":true,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"on_screen":true,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":6,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":12,"on_screen":true,"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":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":7,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":7,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":8,"on_screen":true,"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":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-6786024033215009004
|
6273909199219283020
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
[JY-20814] Release unused Twilio numbers on Production - Jira
[JY-20814] Release unused Twilio numbers on Production - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
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
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
SE Kanban
SE Kanban
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...
|
71545
|
NULL
|
NULL
|
NULL
|
|
71545
|
2568
|
3
|
2026-05-26T06:53:43.567510+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778423567_m1.jpg...
|
Firefox
|
[JY-20814] Release unused Twilio numbers on Produc [JY-20814] Release unused Twilio numbers on Production - Jira — Work...
|
1
|
jiminny.atlassian.net/browse/JY-20814?issueKey=JY- jiminny.atlassian.net/browse/JY-20814?issueKey=JY-20814&subProduct=jira-software...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
[JY-20814] Release unused Twilio numbers on Production - Jira
[JY-20814] Release unused Twilio numbers on Production - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
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
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
SE Kanban
SE Kanban
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"on_screen":true,"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,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"What's New in Firefox 151 — Firefox.com","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"What's New in Firefox 151 — Firefox.com","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"[JY-20814] Release unused Twilio numbers on Production - Jira","depth":4,"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"[JY-20814] Release unused Twilio numbers on Production - Jira","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"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,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":3,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":3,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":5,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Switch sites or apps","depth":4,"on_screen":true,"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":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"on_screen":true,"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":5,"on_screen":true,"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":4,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"on_screen":true,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"on_screen":true,"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":8,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":6,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":11,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":12,"on_screen":true,"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":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":13,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":16,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":12,"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":14,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":7,"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Confluence , (opens new window)","depth":7,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Confluence","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":7,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":8,"on_screen":true,"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":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":10,"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-11117","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-11117","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":10,"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-20814","depth":10,"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20814","depth":12,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Release unused Twilio numbers on Production- Summary, edit","depth":6,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Release unused Twilio numbers on Production","depth":6,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Release unused Twilio numbers on Production","depth":7,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":7,"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":7,"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":6,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Description, edit","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please release all unused Twilio numbers with a command which:","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"List all Twilio subaccounts","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For every subaccount get all active numbers from Twilio","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2938290683261725295
|
5120985491894031596
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
[JY-20814] Release unused Twilio numbers on Production - Jira
[JY-20814] Release unused Twilio numbers on Production - Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
Switch sites or apps
Switch sites or apps
Go to your Jira homepage
Search, press enter to navigate to advanced search with your text query
Create
Create
Rovo Ask Rovo
Ask Rovo
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
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
SE Kanban
SE Kanban
Board actions
Board actions
Service-Desk
Service-Desk
More actions for Service-Desk
More actions for Service-Desk
More spaces
More spaces
Filters
Filters
More actions for Filters
More actions for Filters
Dashboards
Dashboards
Create dashboard
Create dashboard
More actions for Dashboards
More actions for Dashboards
Operations
Operations
More actions for Operations
More actions for Operations
Confluence , (opens new window)
Confluence
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71544
|
2569
|
2
|
2026-05-26T06:53:41.049192+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778421049_m2.jpg...
|
Firefox
|
Jira — Work
|
1
|
jiminny.atlassian.net/browse/JY-20814?atlOrigin=ey jiminny.atlassian.net/browse/JY-20814?atlOrigin=eyJpIjoiZTFiNjU5NmM1OTkxNGMwNGEzYTk2ZmNmNDZkNjVjNDgiLCJwIjoiamlyYS1zbGFjay1pbnQifQ&issueKey=JY-20814&subProduct=jira-software...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
The App Switcher is loading
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
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
SE Kanban
SE Kanban
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
Assets , (opens new window)
Assets
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio
If this number is not used by any Jiminny user, release it from Twilio
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Newest first Newest first
Newest first
Add a comment…
Who is working on this...?
Who is working on this...?
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
Resize work item view side panel...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"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.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.044049203,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"What's New in Firefox 151 — Firefox.com","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"What's New in Firefox 151 — Firefox.com","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.07014628,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.0063164895,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.20031923,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.22745411,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Skip to:","depth":3,"bounds":{"left":0.090259306,"top":0.07861133,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Sidebar","depth":4,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sidebar","depth":5,"bounds":{"left":0.090259306,"top":0.097765364,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Top Bar","depth":4,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Top Bar","depth":5,"bounds":{"left":0.090259306,"top":0.11691939,"width":0.016954787,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Main Content","depth":4,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Main Content","depth":5,"bounds":{"left":0.090259306,"top":0.13607343,"width":0.029421542,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse sidebar [","depth":3,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.039727394,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"The App Switcher is loading","depth":4,"bounds":{"left":0.095578454,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"on_screen":true,"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":5,"bounds":{"left":0.20694813,"top":0.06264964,"width":0.13829787,"height":0.015961692},"on_screen":true,"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":4,"bounds":{"left":0.35355717,"top":0.057861134,"width":0.030086435,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"bounds":{"left":0.3648604,"top":0.06384677,"width":0.014793883,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"bounds":{"left":0.41206783,"top":0.057861134,"width":0.036070477,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":8,"bounds":{"left":0.42337102,"top":0.06384677,"width":0.020777926,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"bounds":{"left":0.44946808,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"bounds":{"left":0.45462102,"top":0.06344773,"width":0.027759308,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"bounds":{"left":0.46143618,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"bounds":{"left":0.4665891,"top":0.06344773,"width":0.010139627,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"bounds":{"left":0.47340426,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"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":8,"bounds":{"left":0.47855717,"top":0.06344773,"width":0.017952127,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"bounds":{"left":0.48537233,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"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":8,"bounds":{"left":0.49052528,"top":0.06344773,"width":0.05867686,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":6,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":9,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.01662234,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":6,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":9,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015458777,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":6,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":9,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":6,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":9,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011635638,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":7,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":6,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":9,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016456118,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":7,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":7,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":10,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013464096,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":11,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":14,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.032081116,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":12,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":12,"bounds":{"left":0.13646941,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":12,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":13,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":16,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.032247342,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":13,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":16,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.03125,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":13,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":16,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.050531916,"height":0.030726258},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":13,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":16,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.038231384,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":13,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":16,"bounds":{"left":0.1022274,"top":0.386672,"width":0.024102394,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":11,"bounds":{"left":0.08759973,"top":0.40622506,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":14,"bounds":{"left":0.09823803,"top":0.4122107,"width":0.03025266,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":12,"bounds":{"left":0.15442154,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":11,"bounds":{"left":0.08759973,"top":0.43176377,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":14,"bounds":{"left":0.09823803,"top":0.43774942,"width":0.028756648,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":6,"bounds":{"left":0.08361037,"top":0.45730248,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":9,"bounds":{"left":0.09424867,"top":0.4632881,"width":0.013796543,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":7,"bounds":{"left":0.15309176,"top":0.46049482,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":6,"bounds":{"left":0.08361037,"top":0.4828412,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":9,"bounds":{"left":0.09424867,"top":0.4888268,"width":0.026761968,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":7,"bounds":{"left":0.15508644,"top":0.48603353,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":7,"bounds":{"left":0.16240026,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":6,"bounds":{"left":0.08361037,"top":0.5083799,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":9,"bounds":{"left":0.09424867,"top":0.5143655,"width":0.02443484,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":7,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Assets , (opens new window)","depth":7,"bounds":{"left":0.08361037,"top":0.5434956,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Assets","depth":11,"bounds":{"left":0.09424867,"top":0.5494813,"width":0.01512633,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"bounds":{"left":0.08361037,"top":0.55706304,"width":0.04837101,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":7,"bounds":{"left":0.08361037,"top":0.56903434,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":11,"bounds":{"left":0.09424867,"top":0.57501996,"width":0.014793883,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"bounds":{"left":0.08361037,"top":0.5826017,"width":0.04837101,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":8,"bounds":{"left":0.14378324,"top":0.57222664,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":6,"bounds":{"left":0.08361037,"top":0.60415006,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":9,"bounds":{"left":0.09424867,"top":0.6101357,"width":0.04155585,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize side navigation panel","depth":7,"bounds":{"left":0.2109375,"top":0.0981644,"width":0.062333778,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":10,"bounds":{"left":0.17137633,"top":0.10933759,"width":0.013962766,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":12,"bounds":{"left":0.17137633,"top":0.11292897,"width":0.013962766,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.18716756,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":10,"bounds":{"left":0.19265293,"top":0.10933759,"width":0.034574468,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":12,"bounds":{"left":0.19996676,"top":0.11292897,"width":0.027260639,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.22905585,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":10,"bounds":{"left":0.23254654,"top":0.10933759,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-11117","depth":10,"bounds":{"left":0.24052526,"top":0.10933759,"width":0.01512633,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-11117","depth":12,"bounds":{"left":0.24052526,"top":0.11292897,"width":0.01512633,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.25748006,"top":0.11173184,"width":0.0016622341,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":10,"bounds":{"left":0.26097074,"top":0.10933759,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-20814","depth":10,"bounds":{"left":0.26894948,"top":0.10933759,"width":0.018118352,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20814","depth":12,"bounds":{"left":0.26894948,"top":0.11292897,"width":0.018118352,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"bounds":{"left":0.28573802,"top":0.11213089,"width":0.005319149,"height":0.012769354},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Release unused Twilio numbers on Production- Summary, edit","depth":6,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Release unused Twilio numbers on Production","depth":6,"bounds":{"left":0.17204122,"top":0.1396648,"width":0.17253989,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Release unused Twilio numbers on Production","depth":7,"bounds":{"left":0.17204122,"top":0.13926576,"width":0.17253989,"height":0.023543496},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":7,"bounds":{"left":0.17137633,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":7,"bounds":{"left":0.1846742,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":6,"bounds":{"left":0.16339761,"top":0.20989625,"width":0.22057846,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":8,"bounds":{"left":0.16206782,"top":0.21308859,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":9,"bounds":{"left":0.17137633,"top":0.2150838,"width":0.029587766,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Description, edit","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.","depth":9,"bounds":{"left":0.17204122,"top":0.23982441,"width":0.20545213,"height":0.05227454},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please release all unused Twilio numbers with a command which:","depth":9,"bounds":{"left":0.17204122,"top":0.30686352,"width":0.14378324,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"List all Twilio subaccounts","depth":11,"bounds":{"left":0.18001994,"top":0.33559456,"width":0.057513297,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For every subaccount get all active numbers from Twilio","depth":11,"bounds":{"left":0.18001994,"top":0.35794094,"width":0.12450133,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If this number is not used by any Jiminny user, release it from Twilio","depth":11,"bounds":{"left":0.18001994,"top":0.38028732,"width":0.14960106,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Subtasks","depth":6,"bounds":{"left":0.17137633,"top":0.43814844,"width":0.023936171,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Subtasks","depth":7,"bounds":{"left":0.17137633,"top":0.4385475,"width":0.023936171,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add subtask","depth":7,"bounds":{"left":0.16738696,"top":0.45889863,"width":0.035405584,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add subtask","depth":9,"bounds":{"left":0.17137633,"top":0.46488428,"width":0.027426861,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Linked work items","depth":6,"bounds":{"left":0.17137633,"top":0.50359136,"width":0.04654255,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Linked work items","depth":7,"bounds":{"left":0.17137633,"top":0.5039904,"width":0.04654255,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add linked work item","depth":7,"bounds":{"left":0.16738696,"top":0.52274543,"width":0.05418883,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add linked work item","depth":9,"bounds":{"left":0.17137633,"top":0.52873105,"width":0.046210106,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Activity","depth":8,"bounds":{"left":0.17137633,"top":0.5674381,"width":0.019946808,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":9,"bounds":{"left":0.17137633,"top":0.5678372,"width":0.019946808,"height":0.01556265},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All","depth":9,"bounds":{"left":0.17237367,"top":0.58898646,"width":0.01412899,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":11,"bounds":{"left":0.17669548,"top":0.5925778,"width":0.005485372,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Comments","depth":9,"bounds":{"left":0.18716756,"top":0.58898646,"width":0.032413565,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Comments","depth":11,"bounds":{"left":0.19148937,"top":0.5925778,"width":0.023769947,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"History","depth":9,"bounds":{"left":0.22024602,"top":0.58898646,"width":0.024268618,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":11,"bounds":{"left":0.22456782,"top":0.5925778,"width":0.015625,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Work log","depth":9,"bounds":{"left":0.24517952,"top":0.58898646,"width":0.02825798,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Work log","depth":11,"bounds":{"left":0.24950133,"top":0.5925778,"width":0.019614361,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newest first Newest first","depth":8,"bounds":{"left":0.37599733,"top":0.5897845,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Newest first","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add a comment…","depth":10,"bounds":{"left":0.1853391,"top":0.6328811,"width":0.19797207,"height":0.07182761},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Who is working on this...?","depth":12,"bounds":{"left":0.19132313,"top":0.6711891,"width":0.06482713,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Who is working on this...?","depth":14,"bounds":{"left":0.1953125,"top":0.67398244,"width":0.056848403,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status update...","depth":12,"bounds":{"left":0.25748006,"top":0.6711891,"width":0.04305186,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status update...","depth":14,"bounds":{"left":0.26146942,"top":0.67398244,"width":0.03507314,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Thanks...","depth":12,"bounds":{"left":0.3018617,"top":0.6711891,"width":0.028590426,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thanks...","depth":14,"bounds":{"left":0.30585107,"top":0.67398244,"width":0.020611702,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pro tip:","depth":11,"bounds":{"left":0.1846742,"top":0.7130886,"width":0.013796543,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"press","depth":10,"bounds":{"left":0.19847074,"top":0.7130886,"width":0.012632979,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"M","depth":12,"bounds":{"left":0.21243352,"top":0.7138867,"width":0.0034906915,"height":0.011173184},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to comment","depth":10,"bounds":{"left":0.21725398,"top":0.7130886,"width":0.023603724,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize work item view side panel","depth":7,"bounds":{"left":0.44398272,"top":0.0981644,"width":0.07263963,"height":0.01396648},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
860650411531589185
|
1662247916175478980
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Skip to:
Sidebar
Sidebar
Top Bar
Top Bar
Main Content
Main Content
Collapse sidebar [
Collapse sidebar [
The App Switcher is loading
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
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
SE Kanban
SE Kanban
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
Assets , (opens new window)
Assets
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Resize side navigation panel
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio
If this number is not used by any Jiminny user, release it from Twilio
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Newest first Newest first
Newest first
Add a comment…
Who is working on this...?
Who is working on this...?
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
Resize work item view side panel...
|
71543
|
NULL
|
NULL
|
NULL
|
|
71543
|
2569
|
1
|
2026-05-26T06:53:37.886758+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778417886_m2.jpg...
|
Firefox
|
Jira — Work
|
1
|
jiminny.atlassian.net/browse/JY-20814?atlOrigin=ey jiminny.atlassian.net/browse/JY-20814?atlOrigin=eyJpIjoiZTFiNjU5NmM1OTkxNGMwNGEzYTk2ZmNmNDZkNjVjNDgiLCJwIjoiamlyYS1zbGFjay1pbnQifQ&issueKey=JY-20814&subProduct=jira-software...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Collapse sidebar [
Collapse sidebar [
The App Switcher is loading
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
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
SE Kanban
SE Kanban
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
Assets , (opens new window)
Assets
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio
If this number is not used by any Jiminny user, release it from Twilio
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Newest first Newest first
Newest first
Add a comment…
Who is working on this...?
Who is working on this...?
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
Resize work item view side panel
Watch options: You are not watching this issue, 1 person watching
1
Share
Share
Actions
Actions
Backlog - Change status
Backlog
Automation
Automation
Improve Story...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"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.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.044049203,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"What's New in Firefox 151 — Firefox.com","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"What's New in Firefox 151 — Firefox.com","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.07014628,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.0063164895,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.20031923,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.22745411,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Collapse sidebar [","depth":3,"bounds":{"left":0.08361037,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse sidebar [","depth":5,"bounds":{"left":0.0887633,"top":0.06344773,"width":0.038896278,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"The App Switcher is loading","depth":3,"bounds":{"left":0.095578454,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Go to your Jira homepage","depth":3,"bounds":{"left":0.10887633,"top":0.057861134,"width":0.029421542,"height":0.025538707},"on_screen":true,"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":5,"bounds":{"left":0.20694813,"top":0.06264964,"width":0.1384641,"height":0.015961692},"on_screen":true,"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":4,"bounds":{"left":0.3537234,"top":0.057861134,"width":0.029920213,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create","depth":6,"bounds":{"left":0.3650266,"top":0.06384677,"width":0.01462766,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Rovo Ask Rovo","depth":6,"bounds":{"left":0.41256648,"top":0.057861134,"width":0.03557181,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Ask Rovo","depth":8,"bounds":{"left":0.42386967,"top":0.06384677,"width":0.020279255,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Notifications","depth":6,"bounds":{"left":0.44946808,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Notifications","depth":8,"bounds":{"left":0.45462102,"top":0.06344773,"width":0.027094414,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Help","depth":6,"bounds":{"left":0.46143618,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Help","depth":8,"bounds":{"left":0.4665891,"top":0.06344773,"width":0.009973404,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Settings","depth":6,"bounds":{"left":0.47340426,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"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":8,"bounds":{"left":0.47855717,"top":0.06344773,"width":0.017785905,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"lukas.kovalik@jiminny.com","depth":6,"bounds":{"left":0.48537233,"top":0.057861134,"width":0.010638298,"height":0.025538707},"on_screen":true,"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":8,"bounds":{"left":0.49052528,"top":0.06344773,"width":0.056349736,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"For you","depth":6,"bounds":{"left":0.08361037,"top":0.09976058,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you","depth":9,"bounds":{"left":0.09424867,"top":0.10574621,"width":0.016456118,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Recent","depth":6,"bounds":{"left":0.08361037,"top":0.12529927,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Recent","depth":9,"bounds":{"left":0.09424867,"top":0.13128492,"width":0.015292553,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Starred","depth":6,"bounds":{"left":0.08361037,"top":0.15083799,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Starred","depth":9,"bounds":{"left":0.09424867,"top":0.15682362,"width":0.016456118,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Apps","depth":6,"bounds":{"left":0.08361037,"top":0.1763767,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Apps","depth":9,"bounds":{"left":0.09424867,"top":0.18236233,"width":0.011303191,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Apps","depth":7,"bounds":{"left":0.15309176,"top":0.17956904,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Spaces","depth":6,"bounds":{"left":0.08361037,"top":0.2019154,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXStaticText","text":"Spaces","depth":9,"bounds":{"left":0.09424867,"top":0.20790103,"width":0.016123671,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create space","depth":7,"bounds":{"left":0.13646941,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create space","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for spaces","depth":7,"bounds":{"left":0.14577793,"top":0.20510775,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Recent","depth":10,"bounds":{"left":0.08959442,"top":0.23423783,"width":0.013796543,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New)","depth":11,"bounds":{"left":0.08759973,"top":0.2529928,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":14,"bounds":{"left":0.09823803,"top":0.25897846,"width":0.03158245,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Jiminny (New)","depth":12,"bounds":{"left":0.08892952,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":true},{"role":"AXMenuButton","text":"Create board","depth":12,"bounds":{"left":0.13646941,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Jiminny (New)","depth":12,"bounds":{"left":0.14577793,"top":0.25618514,"width":0.007978723,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Platform Team","depth":13,"bounds":{"left":0.09158909,"top":0.27853152,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Platform Team","depth":16,"bounds":{"left":0.1022274,"top":0.28451717,"width":0.031914894,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.28172386,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Capture Team","depth":13,"bounds":{"left":0.09158909,"top":0.30407023,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Capture Team","depth":16,"bounds":{"left":0.1022274,"top":0.31005585,"width":0.030751329,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.30726257,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Enterprise Stability Issues 🤕","depth":13,"bounds":{"left":0.09158909,"top":0.32960895,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Enterprise Stability Issues 🤕","depth":16,"bounds":{"left":0.1022274,"top":0.33559456,"width":0.04920213,"height":0.030726258},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.33280128,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Processing Team","depth":13,"bounds":{"left":0.09158909,"top":0.35514766,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Processing Team","depth":16,"bounds":{"left":0.1022274,"top":0.36113328,"width":0.037400264,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.35834,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"SE Kanban","depth":13,"bounds":{"left":0.09158909,"top":0.38068634,"width":0.06349734,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"SE Kanban","depth":16,"bounds":{"left":0.1022274,"top":0.386672,"width":0.023603724,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Board actions","depth":14,"bounds":{"left":0.15309176,"top":0.38387868,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":16,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Service-Desk","depth":11,"bounds":{"left":0.08759973,"top":0.40622506,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Service-Desk","depth":14,"bounds":{"left":0.09823803,"top":0.4122107,"width":0.029587766,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Service-Desk","depth":12,"bounds":{"left":0.15442154,"top":0.4094174,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":14,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"More spaces","depth":11,"bounds":{"left":0.08759973,"top":0.43176377,"width":0.0674867,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More spaces","depth":14,"bounds":{"left":0.09823803,"top":0.43774942,"width":0.028091755,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Filters","depth":6,"bounds":{"left":0.08361037,"top":0.45730248,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Filters","depth":9,"bounds":{"left":0.09424867,"top":0.4632881,"width":0.013630319,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Filters","depth":7,"bounds":{"left":0.15309176,"top":0.46049482,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Dashboards","depth":6,"bounds":{"left":0.08361037,"top":0.4828412,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Dashboards","depth":9,"bounds":{"left":0.09424867,"top":0.4888268,"width":0.02642952,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Create dashboard","depth":7,"bounds":{"left":0.15508644,"top":0.48603353,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Create dashboard","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Dashboards","depth":7,"bounds":{"left":0.16240026,"top":0.48603353,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Operations","depth":6,"bounds":{"left":0.08361037,"top":0.5083799,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Operations","depth":9,"bounds":{"left":0.09424867,"top":0.5143655,"width":0.024268618,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"More actions for Operations","depth":7,"bounds":{"left":0.15309176,"top":0.51157224,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Assets , (opens new window)","depth":7,"bounds":{"left":0.08361037,"top":0.5434956,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Assets","depth":11,"bounds":{"left":0.09424867,"top":0.5494813,"width":0.014793883,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"bounds":{"left":0.08361037,"top":0.55706304,"width":0.046875,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Teams , (opens new window)","depth":7,"bounds":{"left":0.08361037,"top":0.56903434,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Teams","depth":11,"bounds":{"left":0.09424867,"top":0.57501996,"width":0.014295213,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":", (opens new window)","depth":9,"bounds":{"left":0.08361037,"top":0.5826017,"width":0.046875,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"open menu","depth":8,"bounds":{"left":0.14378324,"top":0.57222664,"width":0.0039893617,"height":0.01915403},"on_screen":true,"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":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Customise sidebar","depth":6,"bounds":{"left":0.08361037,"top":0.60415006,"width":0.071476065,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Customise sidebar","depth":9,"bounds":{"left":0.09424867,"top":0.6101357,"width":0.04089096,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Spaces","depth":10,"bounds":{"left":0.17137633,"top":0.10933759,"width":0.013796543,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Spaces","depth":12,"bounds":{"left":0.17137633,"top":0.11292897,"width":0.013796543,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.18716756,"top":0.11213089,"width":0.0013297872,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Jiminny (New) Jiminny (New)","depth":10,"bounds":{"left":0.1924867,"top":0.10933759,"width":0.034075797,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny (New)","depth":12,"bounds":{"left":0.19980054,"top":0.11292897,"width":0.026761968,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.22855718,"top":0.11213089,"width":0.0013297872,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Epic - Change parent","depth":10,"bounds":{"left":0.23188165,"top":0.10933759,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-11117","depth":10,"bounds":{"left":0.23986037,"top":0.10933759,"width":0.016123671,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-11117","depth":12,"bounds":{"left":0.23986037,"top":0.11292897,"width":0.016123671,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"/","depth":10,"bounds":{"left":0.2578125,"top":0.11213089,"width":0.0014960107,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Story - Change work type","depth":10,"bounds":{"left":0.2613032,"top":0.10933759,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"JY-20814","depth":10,"bounds":{"left":0.26928192,"top":0.10933759,"width":0.018118352,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"JY-20814","depth":12,"bounds":{"left":0.26928192,"top":0.11292897,"width":0.018118352,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Copy link","depth":11,"bounds":{"left":0.28607047,"top":0.112529926,"width":0.005319149,"height":0.012769354},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Release unused Twilio numbers on Production- Summary, edit","depth":6,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Release unused Twilio numbers on Production","depth":6,"bounds":{"left":0.17204122,"top":0.1396648,"width":0.16821809,"height":0.022346368},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Release unused Twilio numbers on Production","depth":7,"bounds":{"left":0.17204122,"top":0.13926576,"width":0.16821809,"height":0.023144454},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Add or create work related to this Story","depth":7,"bounds":{"left":0.17137633,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add or create work related to this Story","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"View app actions","depth":7,"bounds":{"left":0.1846742,"top":0.17158818,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View app actions","depth":9,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Collapse Description Description","depth":6,"bounds":{"left":0.16339761,"top":0.20989625,"width":0.22057846,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXButton","text":"Collapse Description","depth":8,"bounds":{"left":0.16206782,"top":0.21308859,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Collapse Description","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Description","depth":9,"bounds":{"left":0.17137633,"top":0.2150838,"width":0.029421542,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add Description, edit","depth":8,"on_screen":false,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.","depth":9,"bounds":{"left":0.17204122,"top":0.23982441,"width":0.20744681,"height":0.0518755},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Please release all unused Twilio numbers with a command which:","depth":9,"bounds":{"left":0.17204122,"top":0.30686352,"width":0.13962767,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"List all Twilio subaccounts","depth":11,"bounds":{"left":0.18001994,"top":0.33559456,"width":0.056017287,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"For every subaccount get all active numbers from Twilio","depth":11,"bounds":{"left":0.18001994,"top":0.35794094,"width":0.12134308,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"If this number is not used by any Jiminny user, release it from Twilio","depth":11,"bounds":{"left":0.18001994,"top":0.38028732,"width":0.14511304,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Subtasks","depth":6,"bounds":{"left":0.17137633,"top":0.43814844,"width":0.023769947,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Subtasks","depth":7,"bounds":{"left":0.17137633,"top":0.4385475,"width":0.023769947,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add subtask","depth":7,"bounds":{"left":0.16738696,"top":0.45889863,"width":0.03474069,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add subtask","depth":9,"bounds":{"left":0.17137633,"top":0.46488428,"width":0.026761968,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Linked work items","depth":6,"bounds":{"left":0.17137633,"top":0.50359136,"width":0.04637633,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Linked work items","depth":7,"bounds":{"left":0.17137633,"top":0.5039904,"width":0.04637633,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add linked work item","depth":7,"bounds":{"left":0.16738696,"top":0.52274543,"width":0.05285904,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Add linked work item","depth":9,"bounds":{"left":0.17137633,"top":0.52873105,"width":0.04488032,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Activity","depth":8,"bounds":{"left":0.17137633,"top":0.5674381,"width":0.019448139,"height":0.015961692},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Activity","depth":9,"bounds":{"left":0.17137633,"top":0.5678372,"width":0.019448139,"height":0.015163607},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"All","depth":9,"bounds":{"left":0.17237367,"top":0.58898646,"width":0.013962766,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"All","depth":11,"bounds":{"left":0.17669548,"top":0.5925778,"width":0.005319149,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Comments","depth":9,"bounds":{"left":0.18700133,"top":0.58898646,"width":0.031914894,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Comments","depth":11,"bounds":{"left":0.19132313,"top":0.5925778,"width":0.023271276,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"History","depth":9,"bounds":{"left":0.21958111,"top":0.58898646,"width":0.024102394,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"History","depth":11,"bounds":{"left":0.22390293,"top":0.5925778,"width":0.015458777,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Work log","depth":9,"bounds":{"left":0.2443484,"top":0.58898646,"width":0.027593086,"height":0.0207502},"on_screen":true,"help_text":"","role_description":"radio button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Work log","depth":11,"bounds":{"left":0.2486702,"top":0.5925778,"width":0.018949468,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Newest first Newest first","depth":8,"bounds":{"left":0.37599733,"top":0.5897845,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Newest first","depth":10,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Add a comment…","depth":10,"bounds":{"left":0.1853391,"top":0.6328811,"width":0.19797207,"height":0.07182761},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Who is working on this...?","depth":12,"bounds":{"left":0.19132313,"top":0.6711891,"width":0.064328454,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Who is working on this...?","depth":14,"bounds":{"left":0.1953125,"top":0.67398244,"width":0.056349736,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Status update...","depth":12,"bounds":{"left":0.25698137,"top":0.6711891,"width":0.04305186,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Status update...","depth":14,"bounds":{"left":0.26097074,"top":0.67398244,"width":0.03507314,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Thanks...","depth":12,"bounds":{"left":0.30136302,"top":0.6711891,"width":0.028091755,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Thanks...","depth":14,"bounds":{"left":0.3053524,"top":0.67398244,"width":0.020113032,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Pro tip:","depth":11,"bounds":{"left":0.1846742,"top":0.7130886,"width":0.014461436,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"press","depth":10,"bounds":{"left":0.19913563,"top":0.7130886,"width":0.012632979,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"M","depth":12,"bounds":{"left":0.2130984,"top":0.7138867,"width":0.0033244682,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"to comment","depth":10,"bounds":{"left":0.21775267,"top":0.7130886,"width":0.023603724,"height":0.011971269},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Resize work item view side panel","depth":7,"bounds":{"left":0.44398272,"top":0.0981644,"width":0.070644945,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Watch options: You are not watching this issue, 1 person watching","depth":8,"bounds":{"left":0.4479721,"top":0.10694334,"width":0.017453458,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":12,"bounds":{"left":0.45927528,"top":0.11292897,"width":0.0021609042,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Share","depth":9,"bounds":{"left":0.4680851,"top":0.10694334,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Share","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Actions","depth":9,"bounds":{"left":0.48138297,"top":0.10694334,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Actions","depth":11,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Backlog - Change status","depth":6,"bounds":{"left":0.39860374,"top":0.14365523,"width":0.03158245,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Backlog","depth":8,"bounds":{"left":0.40259308,"top":0.14964086,"width":0.01761968,"height":0.013567438},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Automation","depth":6,"bounds":{"left":0.43284574,"top":0.14365523,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Automation","depth":8,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXMenuButton","text":"Improve Story","depth":6,"bounds":{"left":0.39860374,"top":0.17877094,"width":0.044049203,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"menu button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
1772977314040080546
|
5121014886585324740
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Collapse sidebar [
Collapse sidebar [
The App Switcher is loading
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
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
SE Kanban
SE Kanban
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
Assets , (opens new window)
Assets
, (opens new window)
Teams , (opens new window)
Teams
, (opens new window)
open menu
open menu
Customise sidebar
Customise sidebar
Spaces
Spaces
/
Jiminny (New) Jiminny (New)
Jiminny (New)
/
Epic - Change parent
JY-11117
JY-11117
/
Story - Change work type
JY-20814
JY-20814
Copy link
Release unused Twilio numbers on Production- Summary, edit
Release unused Twilio numbers on Production
Release unused Twilio numbers on Production
Add or create work related to this Story
Add or create work related to this Story
View app actions
View app actions
Collapse Description Description
Collapse Description
Collapse Description
Description
Add Description, edit
Currently there are hundreds of Twilio numbers which are not used by any active Voice user and we are paying for them. We are paying for 1100 numbers and using 565 according to the db, 34 of which are Jiminny users. This results in paying $5k for recording 500 hours of calls.
Please release all unused Twilio numbers with a command which:
List all Twilio subaccounts
For every subaccount get all active numbers from Twilio
If this number is not used by any Jiminny user, release it from Twilio
Subtasks
Subtasks
Add subtask
Add subtask
Linked work items
Linked work items
Add linked work item
Add linked work item
Activity
Activity
All
All
Comments
Comments
History
History
Work log
Work log
Newest first Newest first
Newest first
Add a comment…
Who is working on this...?
Who is working on this...?
Status update...
Status update...
Thanks...
Thanks...
Pro tip:
press
M
to comment
Resize work item view side panel
Watch options: You are not watching this issue, 1 person watching
1
Share
Share
Actions
Actions
Backlog - Change status
Backlog
Automation
Automation
Improve Story...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71542
|
2569
|
0
|
2026-05-26T06:53:36.393994+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778416393_m2.jpg...
|
Firefox
|
Jira — Work
|
1
|
jiminny.atlassian.net/browse/JY-20814?atlOrigin=ey jiminny.atlassian.net/browse/JY-20814?atlOrigin=eyJpIjoiZTFiNjU5NmM1OTkxNGMwNGEzYTk2ZmNmNDZkNjVjNDgiLCJwIjoiamlyYS1zbGFjay1pbnQifQ&issueKey=JY-20814&subProduct=jira-software...
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Transferring data from jiminny.atlassian.net…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.0018284575,"top":0.0518755,"width":0.038065158,"height":0.032721467},"on_screen":true,"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.039893616,"top":0.0518755,"width":0.037898935,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Login - SonarQube Cloud","depth":4,"bounds":{"left":0.0,"top":0.09497207,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login - SonarQube Cloud","depth":5,"bounds":{"left":0.013297873,"top":0.10614525,"width":0.044049203,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"What's New in Firefox 151 — Firefox.com","depth":4,"bounds":{"left":0.0,"top":0.12769353,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"What's New in Firefox 151 — Firefox.com","depth":5,"bounds":{"left":0.013297873,"top":0.13886672,"width":0.07014628,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.16041501,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.013297873,"top":0.17158818,"width":0.014960106,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jira","depth":4,"bounds":{"left":0.0,"top":0.19313647,"width":0.07962101,"height":0.032721467},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jira","depth":5,"bounds":{"left":0.013297873,"top":0.20430966,"width":0.0063164895,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.06732048,"top":0.20031923,"width":0.007978723,"height":0.01915403},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.0028257978,"top":0.22745411,"width":0.07413564,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0028257978,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.013796543,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.024933511,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.036070477,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.04720745,"top":0.97007185,"width":0.010638298,"height":0.025538707},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Transferring data from jiminny.atlassian.net…","depth":5,"bounds":{"left":0.0809508,"top":0.9876297,"width":0.078125,"height":0.010774142},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8279841146475583493
|
8936385745892230348
|
click
|
hybrid
|
NULL
|
Platform Sprint 4 Q2 - Platform Team - Scrum Board Platform Sprint 4 Q2 - Platform Team - Scrum Board - Jira
Service-Desk - Queues - Platform team - Service space - Jira
Login - SonarQube Cloud
Login - SonarQube Cloud
What's New in Firefox 151 — Firefox.com
What's New in Firefox 151 — Firefox.com
New Tab
New Tab
Jira
Jira
Close tab
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Transferring data from jiminny.atlassian.net…
rircroxViewHistoryooountrnroie.WindowHelpnny.atlassian.net/browse/JY-20814?atiO00%L2Tue 26 May 9:53:36€3 Login - SonarQube CloudWhatte Mowr in Firotm 15t-SiroteNew Taa- New 10tom.toglaraveio"Sf- uminnylocalhost& HS_Jocal [EMAIL] (EUA console [STAGINGserael do,ROM text celaveuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]›SELECT DISTINCT u.id, u.enail, u.name, u.softphone_number, COUNT(a.id) as sms_coun:FROM users uINNER JOIN activities a ON u.id = .user icUiake trwoetkeAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)GROUP BY u.id, u.eaail, u.nane. u.softohone-numbenORDER BY sns count DESCSelecs tronPinwneedselect * fron rolesSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*thonner so EroM sochall accounts s.JOIN users u on u.id = sa.soclable_1oAhitteansancosonee ttAsWHERE U.tean_id = 1117 and sa.provider = 'hubspot":SELECT * FROM activities AHERE UUEd_tO_bin( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities AHERE UUEd_tO_bin( [CREDIT_CARD]-927f-4f4da2a8185c') = UU:eascootcuetone hseSELECT * FROMteans WHERE 2d = 1117:users where id = 38249playbooks where id = $473nlavboak estacanfae nhors id= 47707select * fron playbook categories where playbook id = 5473select * fron crn fields where id = 659242;crn. field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4.1# JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-81*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsiaeaOherdteh Looging+0.fails. Run it fix it and keep runnig untill all arew passingJu run the tests to seo what's tailing and tx the issues until all tests pass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XoL)achotAccept allsôtytwodtur TasmeettihiseP4 s...
|
71538
|
NULL
|
NULL
|
NULL
|
|
71541
|
2568
|
2
|
2026-05-26T06:53:34.652955+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778414652_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0Jwт@ For you© Recere$ Starred*: АрриQ SpacesJmimy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teatures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF View al quevesE Service requestsA Incibertsll Reporte© Kлowiedge Base& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequest type StrsMore thersSло-чмяPriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CresteStoyan Tomov100% 12Tue 26 May 9:53:34Steliyan GeorgievLukas KovalikAssignee• lukas KovarkTrage ECreated #13/May/26• 5:43...
|
NULL
|
-4035490452881542444
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0Jwт@ For you© Recere$ Starred*: АрриQ SpacesJmimy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teatures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF View al quevesE Service requestsA Incibertsll Reporte© Kлowiedge Base& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequest type StrsMore thersSло-чмяPriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CresteStoyan Tomov100% 12Tue 26 May 9:53:34Steliyan GeorgievLukas KovalikAssignee• lukas KovarkTrage ECreated #13/May/26• 5:43...
|
71540
|
NULL
|
NULL
|
NULL
|
|
71540
|
2568
|
1
|
2026-05-26T06:53:31.293319+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778411293_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay NikolovAneliya Angelova0Jwт@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teatures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF Vieu al quevesE Service requestsA Incibertsll ReportsO Knowiesge Base& CustomersQ ChanneisE Emall logs+-Nikolay IvanovAUM ISSIVE GO00SSpaces / Service-Desk / QuevesPlatform teamQ Search wock0 7.Request type strsMore thersSло-чмяSidekick SMS issuePriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CresteStayan Tomov100% 12Tue 26 May 9:53:31|Steliyan GeorgievLukas KovalikAssignee• lukas KovarkTrage ECreated #13/May/26• 5:39...
|
NULL
|
-3534014386975774991
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay NikolovAneliya Angelova0Jwт@ For you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teatures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF Vieu al quevesE Service requestsA Incibertsll ReportsO Knowiesge Base& CustomersQ ChanneisE Emall logs+-Nikolay IvanovAUM ISSIVE GO00SSpaces / Service-Desk / QuevesPlatform teamQ Search wock0 7.Request type strsMore thersSло-чмяSidekick SMS issuePriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CresteStayan Tomov100% 12Tue 26 May 9:53:31|Steliyan GeorgievLukas KovalikAssignee• lukas KovarkTrage ECreated #13/May/26• 5:39...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71539
|
2568
|
0
|
2026-05-26T06:53:22.870008+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778402870_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 Jaw@ Foe you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets§ Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teotures requestsInfoSec issuesReady for Oustomer6 Resolved ticketsF View al quevesE Service requestsA Incibertsll ReportsO Kлoжieодe Base& CustomersO ChanceisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequest type StrsMore thersSло-чмяPriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% 128•Tue 26 May 9:53:22NSteliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 5:30...
|
NULL
|
-7580326521119936961
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 Jaw@ Foe you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets§ Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite reilability teamO New teotures requestsInfoSec issuesReady for Oustomer6 Resolved ticketsF View al quevesE Service requestsA Incibertsll ReportsO Kлoжieодe Base& CustomersO ChanceisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequest type StrsMore thersSло-чмяPriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% 128•Tue 26 May 9:53:22NSteliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 5:30...
|
71536
|
NULL
|
NULL
|
NULL
|
|
71538
|
NULL
|
0
|
2026-05-26T06:53:20.825755+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778400825_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ D HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ Describe what you are looking forJiminny ... ~Story JY... Jira.Suncing.uinrendeRe lease unused Tiwillio numbers© Threadshaandcloson ProductionJira Cloud CDrafts & sent010) DirectoriesRh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team® Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bet olatform-tickets# product launches# random# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocallz.env.otheonu nroductiar.env.production-euonu asE onu as8a 8g3•S@дServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal ([EMAIL] console (EU1691as Googlefnail:neSaCeraN—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiecteLay.TTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealtcacch-aluoexc.s aninny.con"ronment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726onorecked runceion selooYooanent:secloorMEET728onotacted function teacbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text celavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonae ntesWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:20+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
7974617880121120678
|
NULL
|
visual_change
|
ocr
|
NULL
|
HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ D HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ Describe what you are looking forJiminny ... ~Story JY... Jira.Suncing.uinrendeRe lease unused Tiwillio numbers© Threadshaandcloson ProductionJira Cloud CDrafts & sent010) DirectoriesRh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team® Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bet olatform-tickets# product launches# random# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocallz.env.otheonu nroductiar.env.production-euonu asE onu as8a 8g3•S@дServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal ([EMAIL] console (EU1691as Googlefnail:neSaCeraN—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiecteLay.TTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealtcacch-aluoexc.s aninny.con"ronment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726onorecked runceion selooYooanent:secloorMEET728onotacted function teacbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text celavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonae ntesWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:20+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71536
|
NULL
|
0
|
2026-05-26T06:53:17.869441+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778397869_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 mw@ Foe you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Site reilabllity teamO New teatures requestsInfoSec issuesReady for OustomerE Resolived ticketsF View al queuesE Service requestsA Incibertsll ReportoO Kлoweодe Base& CustomersO ChanceisE Emall logsSpaces / Service-Desk / QuevesPlatform teamQ Search wock1 work temRequest type strsMore thersSло-чмяSidekick SMS issuePriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% <28•Tue 26 May 9:53:17Steliyan GeorgievLukas KovalikAssignee• lukas KovatkTrage ECreated #13/May/26• 5:25...
|
NULL
|
9214918858324212951
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova0 mw@ Foe you© Recere$ Starred*: АрриQ SpacesJminy 101)( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Site reilabllity teamO New teatures requestsInfoSec issuesReady for OustomerE Resolived ticketsF View al queuesE Service requestsA Incibertsll ReportoO Kлoweодe Base& CustomersO ChanceisE Emall logsSpaces / Service-Desk / QuevesPlatform teamQ Search wock1 work temRequest type strsMore thersSло-чмяSidekick SMS issuePriority levelP2 Medium"yeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% <28•Tue 26 May 9:53:17Steliyan GeorgievLukas KovalikAssignee• lukas KovatkTrage ECreated #13/May/26• 5:25...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71537
|
2567
|
27
|
2026-05-26T06:53:17.864974+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778397864_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forSiminnY …uinrende© ThreadshaandclosDrafts & sent0) Directories01Rh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team@ Channels# ai-chapten# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chuinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;trioutes. Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 7151 environmentProvider(): array=?1ent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosia728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:17+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
-2265462163840771131
|
NULL
|
visual_change
|
ocr
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forSiminnY …uinrende© ThreadshaandclosDrafts & sent0) Directories01Rh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team@ Channels# ai-chapten# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chuinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;trioutes. Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 7151 environmentProvider(): array=?1ent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosia728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:17+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
71535
|
NULL
|
NULL
|
NULL
|
|
71535
|
2567
|
26
|
2026-05-26T06:53:15.534151+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778395534_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
DMsActivityMoneSluCkcolVIChRotonWindow@ Describe w DMsActivityMoneSluCkcolVIChRotonWindow@ Describe what you are looking forServiceTest.php Xlaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostSiminnY …JY-208... Jira Clo.=custom.logA console (EUuinrende© ThreadsTwillio number is not re easediwhen Voice role is removed from6d HuddlesDrafts & sent0) Directories01usenJira Cloud &Rh External connectionsC Crorrodiliminny-xaintegratilplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu aslattrnhonPrecondition,User"Ahas Recorder & Voice** role and has anassigned Twilio softphone number,ens to renrodinee.1.Lor in to Jiminny as an admin user.2. Navigate to Organization Settines › User page3. Remove the Voice role from user "A"4. Check the assigned number in Iwilidmachac.The assigned phone number should besrtomntcallv releacad in twiiaOhtenerThe phone number is not released in Twilio"Note:" The issue appears to be that the numberermamolorslvmtnat rolbseodlintuiliaThes CaliahAsn meihe iCeottanieEsCappEen• the related record in phone numbers table isdolotod ees coppsenOoen in Jima*Summarize1691as Googlefnail:—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;trioutes. Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com']ent s"uscauchealt*[EMAIL]').onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 72637 6onorecked runceion selooYooarent::seclioos42 €)onotacted function teacbonnior vosiaMEET728=7501—731Nockeny: closeooanentceachoaniolwinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina Cdoniauboason50A console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:16+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
-3741078679701034179
|
NULL
|
click
|
ocr
|
NULL
|
DMsActivityMoneSluCkcolVIChRotonWindow@ Describe w DMsActivityMoneSluCkcolVIChRotonWindow@ Describe what you are looking forServiceTest.php Xlaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostSiminnY …JY-208... Jira Clo.=custom.logA console (EUuinrende© ThreadsTwillio number is not re easediwhen Voice role is removed from6d HuddlesDrafts & sent0) Directories01usenJira Cloud &Rh External connectionsC Crorrodiliminny-xaintegratilplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu aslattrnhonPrecondition,User"Ahas Recorder & Voice** role and has anassigned Twilio softphone number,ens to renrodinee.1.Lor in to Jiminny as an admin user.2. Navigate to Organization Settines › User page3. Remove the Voice role from user "A"4. Check the assigned number in Iwilidmachac.The assigned phone number should besrtomntcallv releacad in twiiaOhtenerThe phone number is not released in Twilio"Note:" The issue appears to be that the numberermamolorslvmtnat rolbseodlintuiliaThes CaliahAsn meihe iCeottanieEsCappEen• the related record in phone numbers table isdolotod ees coppsenOoen in Jima*Summarize1691as Googlefnail:—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;trioutes. Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com']ent s"uscauchealt*[EMAIL]').onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 72637 6onorecked runceion selooYooarent::seclioos42 €)onotacted function teacbonnior vosiaMEET728=7501—731Nockeny: closeooanentceachoaniolwinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina Cdoniauboason50A console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:16+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71534
|
2566
|
48
|
2026-05-26T06:53:12.709817+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778392709_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova@ Foe you© Recere$ Starred*: АрриQ SpacesJmimy 101( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Ste reilabllity teamO New teotures requestsInfoSec insuesE Ready for OustomerE Resoived ticketsF View al queuesE Service requestsA Incibertsll RеportsO Kлowiesge Bare& CustomersO ChanneisE Emall logsSpaces / Service-Desk / QuevesPlatform teamQ Search wock1 work temSло-чмяRequest type StrsMore thersPriority levelP2 Mediumyeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% 128•Tue 26 May 9:53:12Steliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage 2 -Created #13/May/26• 5:20...
|
NULL
|
8645203020040342454
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova@ Foe you© Recere$ Starred*: АрриQ SpacesJmimy 101( Secvice-Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Ste reilabllity teamO New teotures requestsInfoSec insuesE Ready for OustomerE Resoived ticketsF View al queuesE Service requestsA Incibertsll RеportsO Kлowiesge Bare& CustomersO ChanneisE Emall logsSpaces / Service-Desk / QuevesPlatform teamQ Search wock1 work temSло-чмяRequest type StrsMore thersPriority levelP2 Mediumyeykye9:53 AM | Daily - PlatformLộ3+ CreateStoyan Tomov100% 128•Tue 26 May 9:53:12Steliyan GeorgievLukas KovalikAssignee• lukas KovaikTrage 2 -Created #13/May/26• 5:20...
|
71533
|
NULL
|
NULL
|
NULL
|
|
71533
|
2566
|
47
|
2026-05-26T06:53:07.686519+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778387686_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova@ Foe you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queuesv Team Priocty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite rellability teamO New teotures requestsInfoSec issues§ Ready for Oustomer6 Resolved ticketsF Vien al queuesE Service requestsA Incibertsll ReporsO Knowiesge Bare& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Serrch workRequesttype suns~More thersw"yeykye9:53 AM | Daily - Platform+ CreuteStoyan Tomov100% <28•Tue 26 May 9:53:077Steliyan GeorgievLukas KovalikAssignee• Lukas KovaikTrage ECreated #13/May/26• 5:15...
|
NULL
|
1338624464557234239
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay NikolovAneliya Angelova@ Foe you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queuesv Team Priocty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite rellability teamO New teotures requestsInfoSec issues§ Ready for Oustomer6 Resolved ticketsF Vien al queuesE Service requestsA Incibertsll ReporsO Knowiesge Bare& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Serrch workRequesttype suns~More thersw"yeykye9:53 AM | Daily - Platform+ CreuteStoyan Tomov100% <28•Tue 26 May 9:53:077Steliyan GeorgievLukas KovalikAssignee• Lukas KovaikTrage ECreated #13/May/26• 5:15...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71532
|
2567
|
25
|
2026-05-26T06:53:05.648933+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778385648_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ D HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ Describe what you are looking forJiminny ... ~Bug JY-... Sira-Suncing.uinrendeTwillio number is not re leased© Threadshaandcloswhen Voice role is removed fromDrafts & sent01usenJira Cloud &0) DirectoriesRh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team® Channels# ai-chapten# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bet olatform-tickets# product launches# random# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallz.env.otheonu nroductiar.env.production-euonu asE onu as8a 8g3agêdAdServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostA console (EU1691as Googlefnail:—403=6941—699nescernheaei— оУс= 69%acades. Contloacades.LoarAccentResiecteLay.TTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702aauseareheeiet aytiode hettses— 715on environmentProvider): arrayent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealtcacch-aluoexc.s aninny.con"ronment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726onorecked runceion selooYooanent:secloorMEET728onotacted function teacbonnior vosia=7501—731Nockeny: closeowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonae ntesWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:05+0.fails. Run it fix it and keep runnig untill all arew passingOherdteh LoogingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
7794470328411816971
|
NULL
|
click
|
ocr
|
NULL
|
HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ D HomeActivityLateMoneSluckcolVIChRotonWindowHelp@ Describe what you are looking forJiminny ... ~Bug JY-... Sira-Suncing.uinrendeTwillio number is not re leased© Threadshaandcloswhen Voice role is removed fromDrafts & sent01usenJira Cloud &0) DirectoriesRh External connectionsC Crorrodiliminnyex-integratiplatform-inner-team® Channels# ai-chapten# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bet olatform-tickets# product launches# random# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocallz.env.otheonu nroductiar.env.production-euonu asE onu as8a 8g3agêdAdServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostA console (EU1691as Googlefnail:—403=6941—699nescernheaei— оУс= 69%acades. Contloacades.LoarAccentResiecteLay.TTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702aauseareheeiet aytiode hettses— 715on environmentProvider): arrayent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealtcacch-aluoexc.s aninny.con"ronment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726onorecked runceion selooYooanent:secloorMEET728onotacted function teacbonnior vosia=7501—731Nockeny: closeowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonae ntesWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:53:05+0.fails. Run it fix it and keep runnig untill all arew passingOherdteh LoogingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
71529
|
NULL
|
NULL
|
NULL
|
|
71531
|
2566
|
46
|
2026-05-26T06:53:05.352529+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778385352_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVpREMUM ISSNikolay Nikolov@ For you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite rellability teamO New teotures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF Vien al quevesE Service requestsA Incibertsll Repors© Kлowiesge Bare& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequesttype sunsMore teersw9:53 AM | Daily - PlatformAneliya AngelovaStoyan TomovTue 26 May 9:53:056Lukas KovalikAssignee• Lukas KovaikThaneeenCreated #13/May/26• 5:13...
|
NULL
|
4842427356163445954
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVpREMUM ISSNikolay Nikolov@ For you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queves~ Team Priccty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamSite rellability teamO New teotures requestsInfoSec issuesE Ready for Oustomer6 Resolved ticketsF Vien al quevesE Service requestsA Incibertsll Repors© Kлowiesge Bare& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform teamQ Search wockRequesttype sunsMore teersw9:53 AM | Daily - PlatformAneliya AngelovaStoyan TomovTue 26 May 9:53:056Lukas KovalikAssignee• Lukas KovaikThaneeenCreated #13/May/26• 5:13...
|
71530
|
NULL
|
NULL
|
NULL
|
|
71530
|
2566
|
45
|
2026-05-26T06:53:04.319417+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778384319_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVpREMUM ISSNikolay Nikolov@ For you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queuesv Team Priocty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Site rellablity teamO New teotures requestsO IntoSec issuesE Ready for Oustomer6 Resolved ticketsF Vien al quevesE Service requestsA Incibertsll ReporsQ Knowiedge Base& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform team• Swch worиRequesttype suns~More therswwyevePwiok9:53 AM | Daily - PlatformyeykyeAneliya AngelovaStoyan Tomov100% <2Tue 26 May 9:53:046Lukas KovalikAssignee• Lukas KovaikThaneeenCreated #13/May/26• 5:12...
|
NULL
|
-2073399135514153035
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVpREMUM ISSNikolay Nikolov@ For you© Recene$ Starred8: АрриQ SpacesJmimy (01a)( Secvice Deske Summary§ Queuesv Team Priocty© Al open tickets© Unassigned ticketsE Support team QueueE Raised by meAssigned to meE Service requests10 Purtorm teamProcessing teamE Site rellablity teamO New teotures requestsO IntoSec issuesE Ready for Oustomer6 Resolved ticketsF Vien al quevesE Service requestsA Incibertsll ReporsQ Knowiedge Base& CustomersQ ChanneisE Emall logs+-Spaces / Service-Desk / QuevesPlatform team• Swch worиRequesttype suns~More therswwyevePwiok9:53 AM | Daily - PlatformyeykyeAneliya AngelovaStoyan Tomov100% <2Tue 26 May 9:53:046Lukas KovalikAssignee• Lukas KovaikThaneeenCreated #13/May/26• 5:12...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71529
|
2567
|
24
|
2026-05-26T06:52:49.028567+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778369028_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forJiminny ... ~uinrende© ThreadshaandclosDrafts & sent0) Directories01Ah External connectionsC Crorrodiliminnyex-integratiplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691—403asooocko=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 715on environmentProvider): array=?1ent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosia728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(A console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .user iclnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:48+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
-5403456872287521221
|
NULL
|
visual_change
|
ocr
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forJiminny ... ~uinrende© ThreadshaandclosDrafts & sent0) Directories01Ah External connectionsC Crorrodiliminnyex-integratiplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691—403asooocko=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes Coversclass;tributes Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 715on environmentProvider): array=?1ent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ent s"uscauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosia728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(A console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .user iclnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:48+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71528
|
2566
|
44
|
2026-05-26T06:52:41.660357+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778361660_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay Nikolov@ Foe you© Recene$ Surred3: АрряQ SpacesJminy 101a)() Service-Desk© Summary§ QuevesTeam Priorty6 Al open tickets© Unassigned ticketsE Support team QueueRaised by meAssigned to meE Service requests10 Purtorm teamProcesting teamSihe rellabllity teamO New features requestsIntoSec issues§ Ready for Oustomer6 Resolved ticketsF Vien al queuesaService requestsA Incibertsll Repors© Knowiedge Base& CustomersO CharneisEmal logsSpaces / Service-Desk / QuevesPlatform teamQ Search workRequest typeMere thersPriority level9:52 AM | Daily - PlatformLộ3Aneliya AngelovaStoyan Tomov100% <2Tue 26 May 9:52:416Lukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 4:49...
|
NULL
|
4462754917074312646
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanovNikolay Nikolov@ Foe you© Recene$ Surred3: АрряQ SpacesJminy 101a)() Service-Desk© Summary§ QuevesTeam Priorty6 Al open tickets© Unassigned ticketsE Support team QueueRaised by meAssigned to meE Service requests10 Purtorm teamProcesting teamSihe rellabllity teamO New features requestsIntoSec issues§ Ready for Oustomer6 Resolved ticketsF Vien al queuesaService requestsA Incibertsll Repors© Knowiedge Base& CustomersO CharneisEmal logsSpaces / Service-Desk / QuevesPlatform teamQ Search workRequest typeMere thersPriority level9:52 AM | Daily - PlatformLộ3Aneliya AngelovaStoyan Tomov100% <2Tue 26 May 9:52:416Lukas KovalikAssignee• lukas KovaikTrage ECreated #13/May/26• 4:49...
|
71526
|
NULL
|
NULL
|
NULL
|
|
71527
|
2567
|
23
|
2026-05-26T06:52:39.875011+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778359875_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forJiminny ... ~uinrende© ThreadshaandclosDrafts & sent0) Directories01Rh External connectionsC Crorrodiliminny-xaintegratilplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chuinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691as Googlefnail:—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes coversclasstrioutes. Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 7151 environmentProvider(): array=?1ent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ents"us Cauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosiaMEET728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .user iclnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:39+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
-5564167316692270601
|
NULL
|
visual_change
|
ocr
|
NULL
|
ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe ActivityLateMoneSIUCKcolVIChRotonWindow@ Describe what you are looking forJiminny ... ~uinrende© ThreadshaandclosDrafts & sent0) Directories01Rh External connectionsC Crorrodiliminny-xaintegratilplatform-inner-team@ Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-besmlantormenckers# product launchesrandon# releases#sona-office.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE.env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asplatorm-inn.9,10Chuinne OverviewFriday, May 22ndset/browse/JY0830[URL_WITH_CREDENTIALS] console (EU1691as Googlefnail:—403=6941—699— оУсnescernheaei= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes coversclasstrioutes. Deraprownder701707=703784[706=709—702ervice::class))et aytiode hettses— 7151 environmentProvider(): array=?1ent' => ['eu'.'catch-all-eu', 'catch-all-eu?txt.jininny.com')ents"us Cauchealt'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.37 6onorecked runceion selooYooanent:setloo.126onotacted function teacbonnior vosiaMEET728=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGPlaygroundvoetcel zo.uuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AEROM text nelaveWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .user iclnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idu.enasa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:39+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run tne rests witnout tne veroose wacAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
71525
|
NULL
|
NULL
|
NULL
|
|
71526
|
2566
|
43
|
2026-05-26T06:52:34.298628+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778354298_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay Nikolov@ For you© Recene$ Sturred21 Аром22 SpacesJniney 1019)( Service Desk© SummaryQutuesTeam PriortyC Al open bckets§ Unassigned ticketsE Support team Quece9 Raised by melE Assigred to meService requests10 Putorm teamO Procetting teamSte rellabity team© New features requestsIntoßec issuesE Ready for Oustomer6 Resolved ticketsF View al queves0) Service request)A Incidertsll ReporsE Knowiedge Base& OustomertO ChaccenE Emal 109n9:52 AM | Daily - PlatformNikolay IvanoVREMUM ISpaces / Service-Desk / QutuesPlatform teamQ, Sewch workRequest typeStatvs1 work ibemкeySummaryPriorty levetPWOAELộ3Aneliya AngelovaStayan Tomov100% <2Tue 26 May 9:52:346Lukas KovalikAssignee© ukas КоvakIN PROGRESSSTrage 2 -Created +13/May/26• 4:42...
|
NULL
|
766746857062246285
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay Nikolov@ For you© Recene$ Sturred21 Аром22 SpacesJniney 1019)( Service Desk© SummaryQutuesTeam PriortyC Al open bckets§ Unassigned ticketsE Support team Quece9 Raised by melE Assigred to meService requests10 Putorm teamO Procetting teamSte rellabity team© New features requestsIntoßec issuesE Ready for Oustomer6 Resolved ticketsF View al queves0) Service request)A Incidertsll ReporsE Knowiedge Base& OustomertO ChaccenE Emal 109n9:52 AM | Daily - PlatformNikolay IvanoVREMUM ISpaces / Service-Desk / QutuesPlatform teamQ, Sewch workRequest typeStatvs1 work ibemкeySummaryPriorty levetPWOAELộ3Aneliya AngelovaStayan Tomov100% <2Tue 26 May 9:52:346Lukas KovalikAssignee© ukas КоvakIN PROGRESSSTrage 2 -Created +13/May/26• 4:42...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71525
|
2567
|
22
|
2026-05-26T06:52:34.156848+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778354156_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
ActivityMoneSlackcolVIChRotonWindowHelp@ Describe ActivityMoneSlackcolVIChRotonWindowHelp@ Describe what you are looking forSiminnY …* (%. Mirauinrendee MescaneAdd canvaso Files© ThreadshaandclosWednesday, March 18thvLukas KovalikDмоnиza моhGDrafts & sent010) DirectoriesRh External connectionsC Crorrodiliminny-xaintegratilewinlatormeinner.toam® Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bewmattormenckors# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asFriday, May 22nd vLtkas Kovallik 3:47 PMЗЛЛRAТИ МИЯIЛИ МИНИТКMirat 5:16.pMпривет Лукаш 3озабира се казвай сukas Kovalkskomподбвами покумонта 2а петека соллинаїwaто nocлonhoила нося тоулова книжкаCИBOCOMeMira S:18 PM•выв сояти ше сым в офиса и ще миклжеш каквй ослежка ти тояова зиветока подлина и ше я напишаLukas Kovalik 5:19 PMсупсо мерсиMire 6.40.o1Mescaze Mira+ Aa37 6126ServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostA console (EU1691as Googlefnail:—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes coversclasstributes Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com']ent s"usCauch"all'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.onorecked runceion selooYooarent::seclioosMEET728onotacted function tearbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(A console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =8458184 Y00 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:34+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
-3388670772336509521
|
NULL
|
click
|
ocr
|
NULL
|
ActivityMoneSlackcolVIChRotonWindowHelp@ Describe ActivityMoneSlackcolVIChRotonWindowHelp@ Describe what you are looking forSiminnY …* (%. Mirauinrendee MescaneAdd canvaso Files© ThreadshaandclosWednesday, March 18thvLukas KovalikDмоnиza моhGDrafts & sent010) DirectoriesRh External connectionsC Crorrodiliminny-xaintegratilewinlatormeinner.toam® Channels# ai-chapter# alerts# backend# bued# confusion-clinid*engineering# general# happy_birthday#fiminny-bewmattormenckors# product launchesrandon# releases# sofia-office.ApiGuardLogin.cheC TestCase.ohol>Cvendosso editorconficE.enuenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asFriday, May 22nd vLtkas Kovallik 3:47 PMЗЛЛRAТИ МИЯIЛИ МИНИТКMirat 5:16.pMпривет Лукаш 3озабира се казвай сukas Kovalkskomподбвами покумонта 2а петека соллинаїwaто nocлonhoила нося тоулова книжкаCИBOCOMeMira S:18 PM•выв сояти ше сым в офиса и ще миклжеш каквй ослежка ти тояова зиветока подлина и ше я напишаLukas Kovalik 5:19 PMсупсо мерсиMire 6.40.o1Mescaze Mira+ Aa37 6126ServiceTest.php X=custom.loglaraveio"SF- uiminnytblocalhost& HS_Jocal (jiminny@localhostA console (EU1691as Googlefnail:—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiectTTextrelaysemynce.tributes coversclasstributes Deraprownder701707=703784[706=709—702aausearelneeitet aytiode hettses— 715on environmentProvider): arrayent' => ['eu".'catch-all-eu', 'catch-all-eu?txt.jininny.com']ent s"usCauch"all'[EMAIL]'].onment defaults to us' => ('other', 'catch-all'. "[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt.j719- 726ent with olus tag' a> f'us'.onorecked runceion selooYooarent::seclioosMEET728onotacted function tearbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(A console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =8458184 Y00 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or ure Urdot urnn uocononnuoohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uu)SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:34+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71524
|
2566
|
42
|
2026-05-26T06:52:32.651398+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778352651_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVA.5MNikolay Nikolov@ For you© Recene$ surred2t 190022 SpacenвиснаC Jninny 1010(] Service-Desk© SummaryQueuerTears PriortyC Al open Dcxets§ Unassigned tickets6 Support seam QueceRaised by meAssipped to me6 Service raquess10 Pottore tamO Procensing team© Ste reiubilky teamNew festures requests5 Infosec issues6 Reaty for CumomerE Rescrved Sckets= Vien al queues2) Sarvice requestA IrcibereslИl ReporsE Knowiedge Base& CustunenO ChunceisEnat 1ogSpaces / Servce-Desk / QurvesPlatform teamQ, Seach wor1 work ihemкeyRequest typeStatwsSummarySagekick 5MS issual9:52 AM | Daily - PlatformLộ3Aneliya AngelovaStoyan Tomov100% <28•Tue 26 May 9:52:326Lukas KovalikAssignee© uкаs КотакиINTRIGADOThage 22 ..Created #13/Way(26• 4:40....
|
NULL
|
-6975174047183639335
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)Galya DimitrovaNikolay IvanoVA.5MNikolay Nikolov@ For you© Recene$ surred2t 190022 SpacenвиснаC Jninny 1010(] Service-Desk© SummaryQueuerTears PriortyC Al open Dcxets§ Unassigned tickets6 Support seam QueceRaised by meAssipped to me6 Service raquess10 Pottore tamO Procensing team© Ste reiubilky teamNew festures requests5 Infosec issues6 Reaty for CumomerE Rescrved Sckets= Vien al queues2) Sarvice requestA IrcibereslИl ReporsE Knowiedge Base& CustunenO ChunceisEnat 1ogSpaces / Servce-Desk / QurvesPlatform teamQ, Seach wor1 work ihemкeyRequest typeStatwsSummarySagekick 5MS issual9:52 AM | Daily - PlatformLộ3Aneliya AngelovaStoyan Tomov100% <28•Tue 26 May 9:52:326Lukas KovalikAssignee© uкаs КотакиINTRIGADOThage 22 ..Created #13/Way(26• 4:40....
|
71522
|
NULL
|
NULL
|
NULL
|
|
71523
|
2567
|
21
|
2026-05-26T06:52:30.506318+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778350506_m2.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
HomeActivitLateMoneSluckcolVIChJiminny ...# engine HomeActivitLateMoneSluckcolVIChJiminny ...# engineeringth general# hapoy birthdhy#iminny-bg# platform-tickets# product launches# randomt released# soha-office# support# thank-yous*the people of imi..Psirect messiresMira5 Nikolaw VankovStoyan TomovGalva DimitrovaAneliya Angelova*% Stovan Tanera James GrahammStefka Stovanovawas WaslerLukas KovaliB:: AnosToastai Jim Gloud.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.envlenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asRotonWindow@ Describe what you are looking for* (%. Mirae MescaneAdd canvas7 FilesWednesday, March 18thvukas Kovalkмоnиza моhaFriday, May 22nd vLtkas Kovallik 3:47 PMЗЛЛRAТИ МИЯIЛИ МИНИТКMirat 5:16.pMпривет Лукаш 3озабира се казвай сukas KovalkskomТодбРамИ Покумонта 2а летека СоЯЛинеwaто nocлonhoила нося тоулова книжкаCИBOCMEMira S:18 PM•выв сояти ше сым в офиса и ще микажеш каква бележка ти трябва заветока подлина и ше я напишаLukas Kovalik 5:19 PMсупсо мерсиMire 6.40.o1Mescaze Mira+ Aa37 642 €)ServiceTest.php X=custom.loglaraveio"Sf- uminnylocalhost& HS_Jocal ([EMAIL] console (EU1691as Googlefnail:—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiectelay:TTextrelaysemynce.tributes coversclasstributes Deraprownder701707=703784[706=709—702aausearelneeitet aytinde hetre— 715an anuf cancantPoauf dorde sonsyent' => ['eu".'catch-all-eu', 'catch-all-euftxt.jininny.com']ent' => ('us", 'catch-all','[EMAIL]'].onment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j719- 726ent with olus tag' a f'us'.onorecked runceion selooYooarent::seclioos728onotacted function tearbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or uro ura whan uocenonnudORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = UU,SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook_id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:30+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
5474489420779781228
|
NULL
|
visual_change
|
ocr
|
NULL
|
HomeActivitLateMoneSluckcolVIChJiminny ...# engine HomeActivitLateMoneSluckcolVIChJiminny ...# engineeringth general# hapoy birthdhy#iminny-bg# platform-tickets# product launches# randomt released# soha-office# support# thank-yous*the people of imi..Psirect messiresMira5 Nikolaw VankovStoyan TomovGalva DimitrovaAneliya Angelova*% Stovan Tanera James GrahammStefka Stovanovawas WaslerLukas KovaliB:: AnosToastai Jim Gloud.ApiGuardLogin.cheC TestCase.ohol>Cnvendorso editorconficE.envlenw.circlechcnw.circlaci-nichtteny locallE .env.migrate=enw.nikilocall.env.otheronu nroductiar.env.production-euonu asE onu asRotonWindow@ Describe what you are looking for* (%. Mirae MescaneAdd canvas7 FilesWednesday, March 18thvukas Kovalkмоnиza моhaFriday, May 22nd vLtkas Kovallik 3:47 PMЗЛЛRAТИ МИЯIЛИ МИНИТКMirat 5:16.pMпривет Лукаш 3озабира се казвай сukas KovalkskomТодбРамИ Покумонта 2а летека СоЯЛинеwaто nocлonhoила нося тоулова книжкаCИBOCMEMira S:18 PM•выв сояти ше сым в офиса и ще микажеш каква бележка ти трябва заветока подлина и ше я напишаLukas Kovalik 5:19 PMсупсо мерсиMire 6.40.o1Mescaze Mira+ Aa37 642 €)ServiceTest.php X=custom.loglaraveio"Sf- uminnylocalhost& HS_Jocal ([EMAIL] console (EU1691as Googlefnail:—403=6941—699nesaceranheaeih— оУс= 69%acades. Contloacades.LoarAccentResiectelay:TTextrelaysemynce.tributes coversclasstributes Deraprownder701707=703784[706=709—702aausearelneeitet aytinde hetre— 715an anuf cancantPoauf dorde sonsyent' => ['eu".'catch-all-eu', 'catch-all-euftxt.jininny.com']ent' => ('us", 'catch-all','[EMAIL]'].onment_defaults_to_us' => ['other', 'catch-all', '[EMAIL]']ent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j719- 726ent with olus tag' a f'us'.onorecked runceion selooYooarent::seclioos728onotacted function tearbonnior vosia=7501—731Nockeny: closeooanentceachonniowinntnenausidonanus.nansont.Prauddon"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .usericlnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)orour or uro ura whan uocenonnudORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities HHERE UUEd_tO_bIn( 8824fffb-2df7-4817-91f4-d9f896850248) = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = UU,SELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook_id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.con 4ield1d = 41d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsidsD00%LTue 26 May 9:52:30+0.fails. Run it fix it and keep runnig untill all arew passingOtendtehy loggingJu run the tests to seo what's tailing and tx the issues until all tests oass.tes tssuns//5erv/Ces/Max//Tex ERelay arvicetest.php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
71520
|
NULL
|
NULL
|
NULL
|
|
71522
|
2566
|
41
|
2026-05-26T06:52:29.769279+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778349769_m1.jpg...
|
iTerm2
|
NULL
|
1
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditView→Nikolay Ivanov (Presenting, an FirefoxFileEditView→Nikolay Ivanov (Presenting, annotating)HistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0+Galya DimitrovaNikolay Nikolov@ Foe you© Recere$ Surred21 АрряQ SpacesJmimy 1019)( Service Desk© Summary§ QuevesTeam Priorty• Al оpen Uckets§ Unassigned ticketsE Support seam QueueQ Raised by meAssigned to meE Service requests10 Purtorm teamO Procesting team§ Ste reilablity teamO Neu teotures requestsO IntoSec insues§ Ready for OustomerE Resolved ticketsF Vien al queuesoService requestsA Incibertsl ReportsQ Knowiedge Base& CustomersO CharneisE Emal logs9:52 AM | Daily - PlatformNikolay IvanovSpaces / Service-Desk / QuevesPlatform teamQ Search work1 work ttemKeyЗК0040Request type sthsMore therswPriority levelP2 MediumLộ3"yeykyeAneliya AngelovaStayan Tomov100% <28•Tue 26 May 9:52:29=6Lukas KovalikAssignee• Lukas KovakIN PROCRESS SITrage CCreated #13/May/26• 4:37...
|
NULL
|
114983709351465892
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEditView→Nikolay Ivanov (Presenting, an FirefoxFileEditView→Nikolay Ivanov (Presenting, annotating)HistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0+Galya DimitrovaNikolay Nikolov@ Foe you© Recere$ Surred21 АрряQ SpacesJmimy 1019)( Service Desk© Summary§ QuevesTeam Priorty• Al оpen Uckets§ Unassigned ticketsE Support seam QueueQ Raised by meAssigned to meE Service requests10 Purtorm teamO Procesting team§ Ste reilablity teamO Neu teotures requestsO IntoSec insues§ Ready for OustomerE Resolved ticketsF Vien al queuesoService requestsA Incibertsl ReportsQ Knowiedge Base& CustomersO CharneisE Emal logs9:52 AM | Daily - PlatformNikolay IvanovSpaces / Service-Desk / QuevesPlatform teamQ Search work1 work ttemKeyЗК0040Request type sthsMore therswPriority levelP2 MediumLộ3"yeykyeAneliya AngelovaStayan Tomov100% <28•Tue 26 May 9:52:29=6Lukas KovalikAssignee• Lukas KovakIN PROCRESS SITrage CCreated #13/May/26• 4:37...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71521
|
2566
|
40
|
2026-05-26T06:52:26.594040+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778346594_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is off....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":16,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.09409722,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Galya Dimitrova's microphone","depth":7,"bounds":{"left":0.121875,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.15243055,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053125,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.284375,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.31215277,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.34270832,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.24340278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.50208336,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.5326389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.43368056,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.6642361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.69201386,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.72256947,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.6232639,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.853125,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8836806,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9142361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.81354165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9690972,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:52","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.021527778,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07534722,"top":0.9444444,"width":0.017708333,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.110416666,"top":0.9111111,"width":0.08055556,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.110416666,"top":0.9444444,"width":0.08055556,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Your microphone is off.","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-1818220261884861108
|
351835470354438960
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
Mute Galya Dimitrova's microphone
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn on microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is off.
FirefoxFileEdit→ViewCNikolay Ivanov (Presenting, annotating)HistoryBookmarksProfilesToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0+Galya DimitrovaNikolay Nikolov@ Foe you© Recere$ Surred21 АрряQ SpacesJmimy 1019)(7 Service-Desk© Summary§ QuevesTeam Priorty• Al оpen Uckets§ Unassigned ticketsE Support seam QueueQ Raised by meO Assigned to moE Service requests10 Purtorm teamO Procesting team§ Ste reilablity teamO Neu teotures requestsO IntoSec insues§ Ready for OustomerE Resolved ticketsF Vien al queuesoService requestsA Incibertsl ReportsQ Knowiedge Base& CustomersO CharneisE Emal logs9:52 AM | Daily - PlatformNikolay IvanovSpaces / Service-Desk / QuevesPlatform teamQ Search work1 work ttemKeyЗК0040Request type sthsMore therswPriority levelP2 MediumLộ3‹$0100% [8 • Tue 26 May 9:52:26=6Aneliya AngelovaLukas KovalikStayan TomovAssignee• Lukas KovakTh ReocaissyTrage CCreated #13/May/26• 4:34...
|
71519
|
NULL
|
NULL
|
NULL
|
|
71520
|
2567
|
20
|
2026-05-26T06:52:19.741561+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778339741_m2.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.27027926,"top":1.0,"width":0.016123671,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.27094415,"top":1.0,"width":0.004986702,"height":-0.051875472},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.27310506,"top":1.0,"width":0.010638298,"height":-0.086193085},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.30501994,"top":1.0,"width":0.083942816,"height":-0.07342374},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.69481385,"top":1.0,"width":0.019614361,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":16,"bounds":{"left":0.7081117,"top":1.0,"width":0.0023271276,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.71708775,"top":1.0,"width":0.011968086,"height":-0.06424582},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.7184175,"top":1.0,"width":0.043550532,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.7330452,"top":1.0,"width":0.013464096,"height":-0.072625756},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.73204786,"top":1.0,"width":0.011303191,"height":-0.065043926},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:52","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Your microphone is on.","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2580797145086338145
|
342546761763248944
|
click
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on.
FV faVsco.is ~%o maate yProinet vC EmailActivityServiceTest.php8 InboySarviceTest.php© TextRelayServiceTest.php> (D MeetinaGeneratonMNotiFestion> (D RecallAl> D Team>Da Telechony>C UsenEa UserPilot>&a WebhookC ActivityServiceTest.ohoC AoiResponseServiceTest.phpcnstantMeetnoservicetest [EMAIL]) KioskSemicetest ono@ PlanhatService Test.oho#.PlaybackVidecOntServiceTest.ohoC PlaybookCategoryServiceTest.phpResolveTeamermconnectionTest.phpC SinckServiceTest.phoa# SocialAccountServiceTest.phpC ToamDesctivatedServiceTest.phaeiiaameme deaoeaiaet naCa TeamServiceTest.phoc UserServiceTest.php› @ Traits@ UseCases› @ User@ Utils@ Validatione vo€EnuminArravTrait.phoHeloersTest.cho@ InitialFrontendStateTest.ohd:MockUnusedDeoendenciesTralt.ohr>@unit2022ApiGuardLogin.cho« TestCase.ohd>Ovendosê edrorcontieE.enuE.env.circlacilcnw.circlaci-nichtteny locall= cny miarate=enw.nikilocall.env.otheronu nroductiarE .env.production-euFonu arE onu as© TextRelayService.php=custom.loglaravei.oSf- uminnylocalhost& HS_Jocal (jiminny@localhostA console (EUdocland etnfet tunasetnamespace Tests Unit\Services Mail:1691use Google Service Gnail as Googlefnail:use GooglelServicelGnail \Message as GnailMessageuse GooglelServicelGnail\MessagePartuse GooglelService\Gnail|MessagePartHeader:use TlluminatelSupport) Facades\ Config)use TlluminatelSupport\Facades|Loa:—403=6941—699— оУс= 69%ЗEаRUВВAccentResiectluse sminny conoonent queue constantsuse Jiminny Models\TextRelayuse sminny Services Hane mextrelavsemusceruse PHPUnit\Franework\Attributes \Coversclass:luse PiPun Enanenork,ttribures, Detaprousder701707=703784use Tests Testrase,B 8use raalact onhiaee.luea Mockeny:[706=709—702Trownnenlneeldmyt?auSsnusea..eneeit24 %onee Tayseh Sonusealnet aytande hete— 715public static function environmentProvider(): arrayreturn'catch-all-eu', 'catch-all-eu?txt.jininny.com']"us environment' => ['us', 'catch-all'. '[EMAIL]').'other environment defaults to us' = ('other', 'catch-all'. '[EMAIL]')'eu_environnent_with_plus_tag' => ['eu', 'catch-all-eu', 'catch-all-eu[PHONE].447893937879.3ndZZBqjRoßtxt).j719- 726CS66560406465858888parentassetiod,MEET728protected functsion tearDomn@= vosal=7501—731Nockeny: closeowtnwtnonausidonanus.nansont.Praus.don"public function testisForCurrentEnvironmentlithMatchingX6müriginalToHeader(etaina CdoniauboasonA console [STAGINGoetcel zo.EROM text nelavePlaygroundvuuid, status, code, sender, recipient, created_at =045 A1 A41 У 66 AWHERE uuid = uuid_to_bin(*8626141c-27a6-4d8c-aff8-7c8028a2c656') :# [PASSWORD_DOTS]SELECT DISTINCT u.id, u.email, u.nane, u.softphone_number, COUNT(a.id) as sas_coun:FROM users uINNER JOIN actávities a ON u.id = .user iclnake troetneAND a.created at › DATE SUB(NONO). INTERVAL 30 DAY)oroor or Uro Ura wihah urotenonnuohORDER BY sns count DESC:Selecs tronPiwneedSELECTu.enaCONCAT(u.id, CASE WHEN u.id = t.owner_id THEN ' (owner)* ELSE "* END) AS user_idsa.*t.ouner_1d FROM social_accounts saJOIN users u on u.id = sa.soclable_1oJOIN teans tancosonee ttAsWHERE u.tean_id = 1117 and sa.provider = 'hubspot':SELECT * FROM activities AHERE UUEd_tO_bIn(8824fffb-2df7-4817-91f4-d9f896850248') = UULSELECT * FROM activities NHERE Uuid_to_bin('[CREDIT_CARD]-927f-4f4da2a8185c*) = uuSELECT * FROM com_configurations nHERESELECT * FROM teans WHERE 2d = 1117:select * fron users where id = 38249.select * fron playbooks where id = $473select * fron playbook categories where id = 43783;select * fron playbook categories where playbook id = 5473select * fron crm fields where id = 659242:select * froncrn field values where crn field id = 659242SELECT * FROM con Sield data 4d#JOTN con Sields + ON 4d.crn 4ield1d = 4,1d#JOTN actiivities a ON {d,activity 1d = a,idWHERE actsivityid= 79933459#AND f,con provider 1d = 'hs activity tyoe':select * fron text relavs nhere created at > 12026-85-01*9select * fron actavátales nhere usen 10 TM (7168, 18688) and created at > 12826-85-22'select * fron usens where teamsids100% 12o• luc coMuy Jroc.leTextRelayServiceTest+0.fails. Run it fix it and keep runnig untill all arew passingohendtehy loodindJu run the tests to seo what's tailing and tx the issues until all tests pass.tes tssuns//Serv/es/Max/TexERelay ervicetest,php -verboseonh, coumond noc round. ohmnlach ohioho not founetmachaatww'rtnmockaranvironmontorlo1oashsthtmohmhen• docker ps | grep php438740378364. dkr.ecr.US-eust=2 annutesu5. [IP_ADDRESS]:88-93080/tCр, (::) :88-*3080/tср,I need to run the tests through the Docker container. Let me execute them using Dockerdocker exec docker_lamp_1 php artisan test tests/Unit/Services/Mail/TextRelayServiceTest.php -veroosecex me run te rests witnout tne veroose tasAwker arer docker laeo1 cho ariisan test testsnhit Serices tat nextRelayservicerestronoIcan see the issue. The tests are failing becau + Command Awaiting Approval stonMessaoe class doesn't exist. Let meAck anything (XOL)achotAccept allytwodtur TasmeettihiseP4 s...
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71519
|
2566
|
39
|
2026-05-26T06:52:02.106774+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778322106_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":16,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.09409722,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.121875,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.15243055,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053125,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.284375,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.31215277,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.34270832,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.24340278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.50208336,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.5326389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.43368056,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.6642361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.69201386,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.72256947,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.6232639,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.853125,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8836806,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9142361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.81354165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9690972,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:52","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.021527778,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07534722,"top":0.9444444,"width":0.017708333,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.110416666,"top":0.9111111,"width":0.08055556,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.110416666,"top":0.9444444,"width":0.08055556,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Your microphone is on.","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-2580797145086338145
|
342546761763248944
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:52
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on.
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindow→CHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)‹>0100% <78 • Tue 26 May 9:52:01=6+Galya Dimitrova#0Jw@ Foe you© Recere$ Surred2: АрряQ SpacesJmicy 1019)Jminny Oiew)() Service Desk© Summary6 Queves§ Al open ticketsE Unassigned ticketsE Support team QueueRaised by meE Assigned to meE Service requests15 Purtorm teamProcessing teamO Ste rellability team|E Neu teasres requestsE InfoSec issuesE Ready for Oustomer• kesoived bickelrkewerouevehB Service requestsA Incidentslul Reports@ Knowledge BaseЯ CuntomersO Chanceis9:52 AM | Daily - PlatformNikolay IvanoVREMNikolay NikolovAneliya Angelova0 340-6648Sidekick SMS issue8 Link work ltem* Add formG 215 Add desionDetalls |@ Stoyan Tomon raived tha request via StraAssigneewelcsocHey than© lukas KovalkAssign to meStoyan Tomow@ Report a bugКCOUEEE UYPEScott de Zoeten from Reward Gutewzy-Edenred reached ouf to complain that he got an automated emal stating that his SMS from the 100h of May was not sent to one of hisPowwooeooView retated articiesTwiylevtTo send the text message, he replied to the emall he got when the prospect texted him first:Dev TeamPlutorm teamText from 027 513 8300UnparesetonMenuther tocrrcoCCawyaL> More fields Labets, Time tracking, Type af Brfußiec incidert, Components@nfoßec), Clens,Automation * Svie erecubionTi call you back> featureOS Openfeatureos> Intercom Unted conversTo send a messape back, just reply to this emall> Sentry Sl UnkedisuesCreated May 13, 2020 м. 8.42 AMAnd this is the emall he got aher replying to the emaltLukas Kovalik...• 4:10....
|
NULL
|
NULL
|
NULL
|
NULL
|
|
71518
|
2566
|
38
|
2026-05-26T06:51:52.616383+00:00
|
/Users/lukas/.screenpipe/data/data/2026-05-26/1779 /Users/lukas/.screenpipe/data/data/2026-05-26/1779778312616_m1.jpg...
|
Firefox
|
Meet - Daily - Platform — Work
|
1
|
meet.google.com/mie-gawc-dsi?authuser=0
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:51
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on....
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Meet - Daily - Platform","depth":4,"bounds":{"left":0.0,"top":0.072222225,"width":0.033680554,"height":0.045555554},"on_screen":true,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.0013888889,"top":0.072222225,"width":0.010416667,"height":0.016666668},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.005902778,"top":0.12,"width":0.022222223,"height":0.035555556},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.0,"top":0.7977778,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.0,"top":0.8411111,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0,"top":0.8794444,"width":0.033680554,"height":0.03888889},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.0,"top":0.91833335,"width":0.033680554,"height":0.038333334},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.0,"top":0.95666665,"width":0.033680554,"height":0.043333333},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Nikolay Ivanov (Presenting, annotating)","depth":6,"bounds":{"left":0.072569445,"top":0.101111114,"width":0.17534722,"height":0.022222223},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Nikolay Ivanov (Presenting, annotating)","depth":7,"bounds":{"left":0.072569445,"top":0.10222222,"width":0.17534722,"height":0.020555556},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"People","depth":9,"bounds":{"left":0.88680553,"top":0.08944444,"width":0.04097222,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"6","depth":16,"bounds":{"left":0.9145833,"top":0.101111114,"width":0.0048611113,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Take notes with Gemini","depth":8,"bounds":{"left":0.93333334,"top":0.08944444,"width":0.025,"height":0.04},"on_screen":true,"role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Take notes with Gemini","depth":11,"bounds":{"left":0.9361111,"top":0.101111114,"width":0.06388891,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Gemini","depth":16,"bounds":{"left":0.96666664,"top":0.101111114,"width":0.028125,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Gemini","depth":15,"bounds":{"left":0.96458334,"top":0.090555556,"width":0.023611112,"height":0.037777778},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Unpin Nikolay Ivanov's presentation from your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's presentation","depth":7,"bounds":{"left":0.50208336,"top":0.60888886,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.5326389,"top":0.6111111,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Zoom in","depth":7,"bounds":{"left":0.80243057,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Open in new window","depth":7,"bounds":{"left":0.8357639,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Enter Full Screen","depth":7,"bounds":{"left":0.86909723,"top":0.85333335,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Pin Galya Dimitrova to your main screen","depth":7,"bounds":{"left":0.09409722,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.121875,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Galya Dimitrova","depth":7,"bounds":{"left":0.15243055,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Galya Dimitrova","depth":11,"bounds":{"left":0.053125,"top":0.3122222,"width":0.0625,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Ivanov to your main screen","depth":7,"bounds":{"left":0.284375,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Mute Nikolay Ivanov's microphone","depth":7,"bounds":{"left":0.31215277,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Ivanov","depth":7,"bounds":{"left":0.34270832,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":11,"bounds":{"left":0.24340278,"top":0.3122222,"width":0.05659722,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Nikolay Nikolov to your main screen","depth":7,"bounds":{"left":0.47430557,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.50208336,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Nikolay Nikolov","depth":7,"bounds":{"left":0.5326389,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":11,"bounds":{"left":0.43368056,"top":0.3122222,"width":0.059722222,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Pin Aneliya Angelova to your main screen","depth":7,"bounds":{"left":0.6642361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"You can't unmute someone else","depth":7,"bounds":{"left":0.69201386,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Aneliya Angelova","depth":7,"bounds":{"left":0.72256947,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Aneliya Angelova","depth":11,"bounds":{"left":0.6232639,"top":0.3122222,"width":0.06736111,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"You’re continuously framed","depth":7,"bounds":{"left":0.853125,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":false,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Backgrounds and effects","depth":7,"bounds":{"left":0.8836806,"top":0.21944444,"width":0.030555556,"height":0.04888889},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options for Lukas Kovalik","depth":7,"bounds":{"left":0.9142361,"top":0.22166666,"width":0.027777778,"height":0.044444446},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":11,"bounds":{"left":0.81354165,"top":0.3122222,"width":0.052430555,"height":0.017222222},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Others might see more of your background. Click to view your full video.","depth":8,"bounds":{"left":0.9690972,"top":0.30722222,"width":0.016666668,"height":0.026666667},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"9:51","depth":6,"bounds":{"left":0.050347224,"top":0.9444444,"width":0.02013889,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"AM","depth":6,"bounds":{"left":0.07395833,"top":0.9444444,"width":0.017708333,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXHeading","text":"Daily - Platform","depth":6,"bounds":{"left":0.10902778,"top":0.9111111,"width":0.08090278,"height":0.08888888},"on_screen":true,"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Daily - Platform","depth":9,"bounds":{"left":0.10902778,"top":0.9444444,"width":0.08090278,"height":0.022777777},"on_screen":true,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Audio settings","depth":7,"bounds":{"left":0.32118055,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off microphone","depth":7,"bounds":{"left":0.34895834,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":true,"is_selected":false},{"role":"AXButton","text":"Video settings","depth":7,"bounds":{"left":0.38784721,"top":0.9288889,"width":0.06111111,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn off camera","depth":7,"bounds":{"left":0.415625,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Nikolay Ivanov is presenting","depth":6,"bounds":{"left":0.45451388,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Send a reaction","depth":6,"bounds":{"left":0.49895832,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Turn on captions","depth":7,"bounds":{"left":0.5434028,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Raise hand (ctrl + ⌘ + h)","depth":6,"bounds":{"left":0.58784723,"top":0.9288889,"width":0.03888889,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"More options","depth":6,"bounds":{"left":0.6322917,"top":0.9288889,"width":0.025,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Leave call","depth":6,"bounds":{"left":0.6628472,"top":0.9288889,"width":0.05,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXButton","text":"Meeting details","depth":6,"bounds":{"left":0.89166665,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Chat with everyone","depth":6,"bounds":{"left":0.925,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Meeting tools","depth":6,"bounds":{"left":0.9583333,"top":0.9288889,"width":0.033333335,"height":0.053333335},"on_screen":true,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Your microphone is on.","depth":2,"on_screen":false,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-3083374383980420289
|
342529169577204528
|
visual_change
|
hybrid
|
NULL
|
Meet - Daily - Platform
Close tab
New Tab
Open Goo Meet - Daily - Platform
Close tab
New Tab
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Customize sidebar
Nikolay Ivanov (Presenting, annotating)
Nikolay Ivanov (Presenting, annotating)
People
6
Take notes with Gemini
Take notes with Gemini
Gemini
Gemini
Unpin Nikolay Ivanov's presentation from your main screen
Mute Nikolay Ivanov's presentation
More options for Nikolay Ivanov
Zoom in
Open in new window
Enter Full Screen
Pin Galya Dimitrova to your main screen
You can't unmute someone else
More options for Galya Dimitrova
Galya Dimitrova
Pin Nikolay Ivanov to your main screen
Mute Nikolay Ivanov's microphone
More options for Nikolay Ivanov
Nikolay Ivanov
Pin Nikolay Nikolov to your main screen
You can't unmute someone else
More options for Nikolay Nikolov
Nikolay Nikolov
Pin Aneliya Angelova to your main screen
You can't unmute someone else
More options for Aneliya Angelova
Aneliya Angelova
You’re continuously framed
Backgrounds and effects
More options for Lukas Kovalik
Lukas Kovalik
Others might see more of your background. Click to view your full video.
9:51
AM
Daily - Platform
Daily - Platform
Audio settings
Turn off microphone
Video settings
Turn off camera
Nikolay Ivanov is presenting
Send a reaction
Turn on captions
Raise hand (ctrl + ⌘ + h)
More options
Leave call
Meeting details
Chat with everyone
Meeting tools
Your microphone is on.
FirefoxFileEditViewHistoryBookmarksProfiles→CToolsWindowHelpmeet.google.com/mie-gawc-dsi?authuser=0Nikolay Ivanov (Presenting, annotating)+Galya DimitrovaNikolay IvanoVRENikolay NikolovAneliya Angelova@ For you© Recere$ Surred31 АрряQ SpacesJmimy 101)Sminny Oiew)(l Sevice Desk© SummaryE Queves© Al open ticketsE Unassigned ticketsE Support team QueueRaised by meE Assigned to meE Service requests16 Purtorm teamProcessing teamO She rellablity team|E Neu teasres requestsE InfoSec issuesE Reasy for OustomerKewerouvenB Service requestsA Incidentslul Reports@ Knowledge BaseR OuntomeesO Chanceis9:51 AM | Daily - PlatformLộ3100%8 • Tue 26 May 9:51:52n8 6Lukas Kovalik...
|
71517
|
NULL
|
NULL
|
NULL
|