|
34648
|
NULL
|
0
|
2026-04-16T08:57:26.699067+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776329846699_m1.jpg...
|
Slack
|
Search - Jiminny Inc - 2 new items - Slack
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Results for:
promise
Give feedback
Sort: Most relevant (default)
Sort: Most relevant (default)
9 results
Lukas Kovalik
jiminny-x-integration-app
Jun 3rd, 2025 at 4:38 PM
Jun 3rd, 2025 at 4:38 PM
1.
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a
Promise
(
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful
... Show more...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Results for:","depth":18,"role_description":"text"},{"role":"AXStaticText","text":"promise","depth":18,"role_description":"text"},{"role":"AXButton","text":"Give feedback","depth":18,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXComboBox","text":"Sort: Most relevant (default)","depth":18,"value":"Sort: Most relevant (default)","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Sort: Most relevant (default)","depth":19,"role_description":"text"},{"role":"AXStaticText","text":"9 results","depth":18,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":23,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXLink","text":"Jun 3rd, 2025 at 4:38 PM","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jun 3rd, 2025 at 4:38 PM","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"1.","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Promise","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"(","depth":22,"role_description":"text"},{"role":"AXLink","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":22,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":23,"role_description":"text"},{"role":"AXStaticText","text":") upon successful","depth":22,"role_description":"text"},{"role":"AXButton","text":"... Show more","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-799442693289119362
|
-5932896563800166273
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Results for:
promise
Give feedback
Sort: Most relevant (default)
Sort: Most relevant (default)
9 results
Lukas Kovalik
jiminny-x-integration-app
Jun 3rd, 2025 at 4:38 PM
Jun 3rd, 2025 at 4:38 PM
1.
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a
Promise
(
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful
... Show more
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpallSupport Daily - in 3h 3 mA100% <47Thu 16 Apr 11:57:26-zshDOCKER• 88156582333S2026-04-16T11:20:43.244760Z\nFROM\nframes\nWHERE\nd=3.953801125s2026-04-16T11:20:43.246740Z2026-04-16T11:20:48.600603Z2026-04-16T11:21:08.118947Z2026-04-16T11:23:17.751550Z2026-04-16T11:26:11.761391Z\nFROM\nframes\nWHERE\nd=3.593101083s2026-04-16T11:26:11.762679Z2026-04-16T11:26:15.500463Z2026-04-16111:26:26.01415322026-04-16T11:31:28.731069ZInFROM\nframes \nWHERE\nd=2.600208041s2026-04-16T11:31:28.732839Z2026-04-16T11:31:33.926759Z2026-04-16T11:31:48.403273Z2026-04-16T11:36:43.378402Z2026-04-16T11:36:48.650708Z2026-04-16T11:36:52.354970Z2026-04-16T11:36:58.181767Z2026-04-16T11:36:58.523722Z2026-04-16T11:37:20.170219Z2026-04-16T11:37:56.882597Z2026-04-16T11:42:00.309082Z\nFROM\nframes\nWHERE\nd=1.772983458s2026-04-16T11:42:00.309197Z2026-04-16T11:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes\nWHERE\n=3.464891083s2026-04-16T11:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375ZDEV (docker)882APP (-zsh)83ec2-user@ip-10-30-...₴84-zsh86-zsh₴7* Unable to acce...О 88WARNsqlx::query:summary="SELECT id,snapshot_path IS NOTNULL\nsnapshot_path, device_name, _"db.statement="\n\nSELECT\n id,\nANDtimestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\nsnapshot_path, \ndevice_name, \ntimestamp5000\n'rows_affected=0 rows_returned=118 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 118 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 40 frames, 15.6MB → 1.2MB (12.9), 40 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotINFOscreenpipe_engine::event_compaction: 76 frames,12.6MB+ 5.4MB (2.3x),76 JPEGs deleteddriven_capture: content dedup: skipping capture for monitor 1 (hash=-191790730269621217, trigger=click)WARNsqlx::query:summary="SELECT id,snapshot_path,device_name, ."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned=114 elapseINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: found 114 eligible framesINFOscreenpipe_engine::snapshot_compactzon:snapshotcompaction: 32 frames,12.1MB → 2.4MB (5.0x), 32 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 80 frames,13.4MB→ 6.4MB (2.1x), 80 JPEGs deletedWARNsqlx:: query:summary="SELECT id, snapshot_path, device_name, ."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nANDtimestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected= rows_returned-128 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 128 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 40 frames, 11.9MB → 2.6MB (4.6x), 40 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 86 frames, 19.OMB + 6.3MB (3.0x), 86 JPEGs deletedINFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 164 eligible framesscreenpipe_engine::snapshot_compaction: snapshot compaction: 62 frames, 20.4MB → 2.3MB (9.1x), 62 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 99 frames, 17.2MB → 5.3MB (3.2x), 99 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 1 frames,0.3MB → 0.4MB (0.8x), 1 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned=102 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 102 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 42 frames, 13.9MB → 3.1MB (4.5x), 42 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames, 12.6MB 6.2MB (2.0x), 57 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB → 1.0MB (9.2x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames,10.5MB → 4.7MB (2.2x), 42 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7465795543963075308, trigger=click)WARN sqlx:: query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned-61 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61eligibleframesINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 9.6MB → 1.4MB (6.7x), 28 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames,8.9MB → 2.1MB (4.2x), 31 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible frames...
|
34646
|
|
34707
|
NULL
|
0
|
2026-04-16T09:02:45.060935+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330165060_m1.jpg...
|
Firefox
|
Symfony\Component\Debug\Exception\FatalThrowableEr Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line — Work...
|
True
|
jiminny.sentry.io/issues/6873095751/events/cca4d5f jiminny.sentry.io/issues/6873095751/events/cca4d5f2973e4711bb321988afc07ac6/events/?environment=production&environment=production-eu&project=82419&query=&referrer=next-event&seerDrawer=true...
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,560) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
8690714383333886012
|
-5327676857165056821
|
click
|
hybrid
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily • in 2h 58 mБГ100% C8Thu 16 Apr 12:02:44-zshDOCKER• 8812026-04-16711:23:17.751550Z2026-04-16T11:26:11.761391Z\nFROM\nframes\nWHERE\nd-3.593101083s2026-04-16T11:26:11.762679Z2026-04-16T11:26:15.500463Z2026-04-16T11:26:26.014153Z2026-04-16T11:31:28.731069ZInFROM\nframes \nWHERE\nd=2.600208041s2026-04-16711:31:28.73283922026-04-16T11:31:33.926759Z2026-04-16T11:31:48.403273Z2026-04-16111:36:43.37840222026-04-16T11:36:48.650708Z2026-04-16T11:36:52.354970Z2026-04-16T11:36:58.181767Z2026-04-16T11:36:58.523722Z2026-04-16T11:37:20.170219Z2026-04-16T11:37:56.88259722026-04-16711:42:00.309082Z\nFROM\nframes \nWHERE\nd=1.772983458s2026-04-16T11:42:00.309197Z2026-04-16T11:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16111:52:16.2660432\nFROM\nframes \nWHERE\n3.464891083s2026-04-16111:52:16.26676922026-04-16T11:52:19.048528Z2026-04-16111:52:24.79356322026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes \nWHERE \nd=2.425023041s2026-04-16T12:02:32.933357Z2026-04-16T12:02:39.409221ZDEV (docker)882APP (-zsh)83ec2-user@ip-10-30-...-zsh86-zsh₴7* Unable to acce...О 88INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcaptureforWARNsqlx::query:monitor 1 (hash=-191790730269621217,trigger=click)summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nANDtimestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=114 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 114 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 32 frames, 12.1MB → 2.4MB (5.0x), 32 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 80 frames,WARNsqlx::query:13.4MB → 6.4MB (2.1x),80 JPEGs deletedsummary="SELECT id, snapshot_path, device_name, ."db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=128 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 128eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 40 frames, 11.9MB → 2.6MB (4.6x), 40 JPEGs deletedINFOscreenpipe_engine::snapshot_compactzon:snapshotcompaction: 86 frames,19.OMB → 6.3MB (3.0x), 86 JPEGSdeletedINFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 164 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:62 frames,INFO20.4MB → 2.3MB (9.1x), 62 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction: 99 frames,INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:17.2MB → 5.3MB (3.2X), 99 JPEGs deleted1 frames,0.3MB → 0.4MB (0.8x),1 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, -"db.statement="\n\nSELECT\nid, Insnapshot_path, In device_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected=0 rows_returned=102 elapseINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 102 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames, 13.9MB → 3.1MB (4.5x), 42 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 57 frames,: a. ae (. So), 57 3RE doltedscreenpipe_engine::snapshot_compaction: snapshot compaction: found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB → 1.0MB (9.2x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 42 frames,10.5MB → 4.7MB (2.2x), 42 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7465795543963075308, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, intimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=61 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 9.6MB 1.4MB (6.7x), 28 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 8.9MB → 2.1MB (4.2x), 31 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 33 eligible framesi 2a (2), 3 3ee dteedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 5.2MB 1.1MB (4.8x), 15 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames,4.6MB+ 1.2MB (3.8x), 16 JPEGs deletedWARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL \nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-112 elapseINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames, 14.5MB → 2.7MB (5.4x), 49 JPEGs deleted...
|
NULL
|
|
34710
|
NULL
|
0
|
2026-04-16T09:02:55.028309+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330175028_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpjiminny.sentry.io/issues/6873095751/events/c190b3f6093945d6a52e6a99f0d94094/IssuesM°Feed7 Jiminny x Shiji - Reconnecting thessuesIssues / C APP-1DTFSymfony\Component\Debug\Exception\FatalThrowableError| League\Flysystem\Filesystem::has0: Argument #1 (Slocation) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218Ungoinglapp/Jobs/AutomatedReports/SendReportJob.ohv in Jiminnv JobsAutomatedReports SendReoortJob:handle |A Quick FixErrors & OutagesZ For you - ConfluenceBreached MetricsResolvearcniveexplore® Lukas Kovalik - Time OffwalmailnesAll Envs v90D vQ Filter events...u Product Growth Plattorm Userpilo08DashboardsUser Feedbacku UserpilotAll ViewsEvents466usersmisigtiefix(security): composer dependerJan 31 10:00 PMFeb 28 10:00 PMMar 5 0:00 PMreleaseenvironmenycorrelation_idos.nameView all tags15% 869519oo% slagine-mars<1% 8717f1a2-87bc-43...100%INUXConfigure(8) JiminnyAicilsEvents v in this issueSettingsRecommendedYew more Eventslcooy asvNew TabID: c190b3f6an hour ago | JSONJump to: HighlightsStack TracelrdcelagsContext(7 Jiminnvphp php 8.3.30d Linux 6.1.141-155.222.amzn2023.aarch64 € 872023 production© Googlev Highlightse EditIntegrationAccessor MemoraneJiminny • MembranenanoledlevelcransaccionyeserronurlTrace.race I0cc0b4149da24c028599c0d2c3e7f8ce( Fix an autocomplete mistake that sSymfony\Component|DebuglE› x+ New Tabv Stack TraceDisplayO Copy asSymfony\Component\Debug\Exception\FatalThrowableErrorLeague \Flysystem\Filesystem: :has(): Argument #1 (Slocation) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218mecnanismigenericnano eocodeurasneeinnon-aoo./venaor/ledouenysystem/sre/rllesystem.ongzhLeaouerlysystem.rllesystem..ndsShow 1 more frame/app/Jobs/AutomatedReports/SendReportJob.php:80 in Jiminny\Jobs\AutomatedReports\SendReportJob:handleIn App$s3Path = SautomatedReportsService->getMediaPath(Sreport);// Verify the file exists in S3if (! Storage::disk('client-data-cloud')->exists($s3Path) ) {Slogger->error (self::LOG_PREFIXReport file not found in S3', ['uuid' => Sthis->reportUuid,ssrath => ssspach,1):automatedReportsSerObject Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsServicejobDispatcherloggerObject Jiminny\Jobs\JobDispatcherObject Illuminate\Log\LogManager(**)Called from:/vendor/laravel/framework/src/llluminate/Container/BoundMethod.php in Illuminate\Container BoundMethod::Illuminate\Container\closure>Show 14 more frames/app/Queue/Worker/Worker.php:72 in Jiminny Queue Worker \Worker::processCalled from: /vendor/laravel/framework/src/Illuminate/Queue/Worker.php in Illuminate\Queue\Worker:runJobShow 17 more framesLKj Support Daily • in 2h 58 mБг100% C4Thu 16 Apr 12:02:54Events (total)Users (200)1KPriority ol~AssigneeNiKoav NiKolOvvLast seen an hour agoIn release ofzuzoFirst seen 7 months agomnrelease foyeyv Seer Autofix ®€ Root Cause"SendReportJob passes a potentiallynull ss path to storage::existsywithout a null guard, crashing whenAuromateo reoortresut nas no tiee Upen seervssue eckineGitHub# Jirav ACtiVItyAco a comment....• Marked as Ongoingautomatically by sentryRegressedby Sentry in 757713.Resolvedby Martin PetkovView 3 more5 months ago5 months ago5 months agov PeopleMPINparticipatingSSIK IN viewedSimilar IssuesViewMerged IssuesVIew...
|
NULL
|
5363673303896976948
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelpjiminny.sentry.io/issues/6873095751/events/c190b3f6093945d6a52e6a99f0d94094/IssuesM°Feed7 Jiminny x Shiji - Reconnecting thessuesIssues / C APP-1DTFSymfony\Component\Debug\Exception\FatalThrowableError| League\Flysystem\Filesystem::has0: Argument #1 (Slocation) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218Ungoinglapp/Jobs/AutomatedReports/SendReportJob.ohv in Jiminnv JobsAutomatedReports SendReoortJob:handle |A Quick FixErrors & OutagesZ For you - ConfluenceBreached MetricsResolvearcniveexplore® Lukas Kovalik - Time OffwalmailnesAll Envs v90D vQ Filter events...u Product Growth Plattorm Userpilo08DashboardsUser Feedbacku UserpilotAll ViewsEvents466usersmisigtiefix(security): composer dependerJan 31 10:00 PMFeb 28 10:00 PMMar 5 0:00 PMreleaseenvironmenycorrelation_idos.nameView all tags15% 869519oo% slagine-mars<1% 8717f1a2-87bc-43...100%INUXConfigure(8) JiminnyAicilsEvents v in this issueSettingsRecommendedYew more Eventslcooy asvNew TabID: c190b3f6an hour ago | JSONJump to: HighlightsStack TracelrdcelagsContext(7 Jiminnvphp php 8.3.30d Linux 6.1.141-155.222.amzn2023.aarch64 € 872023 production© Googlev Highlightse EditIntegrationAccessor MemoraneJiminny • MembranenanoledlevelcransaccionyeserronurlTrace.race I0cc0b4149da24c028599c0d2c3e7f8ce( Fix an autocomplete mistake that sSymfony\Component|DebuglE› x+ New Tabv Stack TraceDisplayO Copy asSymfony\Component\Debug\Exception\FatalThrowableErrorLeague \Flysystem\Filesystem: :has(): Argument #1 (Slocation) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line 218mecnanismigenericnano eocodeurasneeinnon-aoo./venaor/ledouenysystem/sre/rllesystem.ongzhLeaouerlysystem.rllesystem..ndsShow 1 more frame/app/Jobs/AutomatedReports/SendReportJob.php:80 in Jiminny\Jobs\AutomatedReports\SendReportJob:handleIn App$s3Path = SautomatedReportsService->getMediaPath(Sreport);// Verify the file exists in S3if (! Storage::disk('client-data-cloud')->exists($s3Path) ) {Slogger->error (self::LOG_PREFIXReport file not found in S3', ['uuid' => Sthis->reportUuid,ssrath => ssspach,1):automatedReportsSerObject Jiminny\Services\Kiosk\AutomatedReports\AutomatedReportsServicejobDispatcherloggerObject Jiminny\Jobs\JobDispatcherObject Illuminate\Log\LogManager(**)Called from:/vendor/laravel/framework/src/llluminate/Container/BoundMethod.php in Illuminate\Container BoundMethod::Illuminate\Container\closure>Show 14 more frames/app/Queue/Worker/Worker.php:72 in Jiminny Queue Worker \Worker::processCalled from: /vendor/laravel/framework/src/Illuminate/Queue/Worker.php in Illuminate\Queue\Worker:runJobShow 17 more framesLKj Support Daily • in 2h 58 mБг100% C4Thu 16 Apr 12:02:54Events (total)Users (200)1KPriority ol~AssigneeNiKoav NiKolOvvLast seen an hour agoIn release ofzuzoFirst seen 7 months agomnrelease foyeyv Seer Autofix ®€ Root Cause"SendReportJob passes a potentiallynull ss path to storage::existsywithout a null guard, crashing whenAuromateo reoortresut nas no tiee Upen seervssue eckineGitHub# Jirav ACtiVItyAco a comment....• Marked as Ongoingautomatically by sentryRegressedby Sentry in 757713.Resolvedby Martin PetkovView 3 more5 months ago5 months ago5 months agov PeopleMPINparticipatingSSIK IN viewedSimilar IssuesViewMerged IssuesVIew...
|
NULL
|
|
34742
|
NULL
|
0
|
2026-04-16T09:07:49.432184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330469432_m2.jpg...
|
PhpStorm
|
faVsco.js – TeamSetupController.php
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
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
18
16
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by 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 = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.403125,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.41484374,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.42617187,"top":0.19375,"width":0.00859375,"height":0.015972223},"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.43476564,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"bounds":{"left":0.44492188,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"bounds":{"left":0.45507812,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"bounds":{"left":0.46796876,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"bounds":{"left":0.478125,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"bounds":{"left":0.48828125,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"bounds":{"left":0.5011719,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"bounds":{"left":0.5140625,"top":0.08611111,"width":0.028515626,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"bounds":{"left":0.5453125,"top":0.08611111,"width":0.01015625,"height":0.016666668},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"bounds":{"left":0.5582031,"top":0.08611111,"width":0.034765624,"height":0.016666668},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"bounds":{"left":0.7589844,"top":0.08611111,"width":0.033203125,"height":0.016666668},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"18","depth":4,"bounds":{"left":0.7363281,"top":0.10763889,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"bounds":{"left":0.75,"top":0.10763889,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"13","depth":4,"bounds":{"left":0.7636719,"top":0.10763889,"width":0.011328125,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.7769531,"top":0.10625,"width":0.00859375,"height":0.015972223},"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.7855469,"top":0.10625,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by 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 = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","depth":4,"value":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by 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 = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.0140625,"top":0.041666668,"width":0.028515626,"height":0.021527778},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7465795543963075308
|
6686367547760489549
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
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
18
16
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by 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 = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
34732
|
|
34743
|
NULL
|
0
|
2026-04-16T09:07:58.462027+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330478462_m1.jpg...
|
PhpStorm
|
faVsco.js – TeamSetupController.php
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
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
18
16
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by 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 = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Execute","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Explain Plan","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Browse Query History","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"View Parameters","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open Query Execution Settings…","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"In-Editor Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Tx: Auto","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Cancel Running Statements","depth":4,"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Playground","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"jiminny","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"18","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"16","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"13","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by 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 = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","depth":4,"value":"SELECT * FROM teams WHERE id = 1;\n\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;\nSELECT * FROM crm_fields WHERE id = 2234;\nSELECT * FROM crm_field_values WHERE crm_field_id = 2234;\n\nselect * from crm_profiles where user_id = 143;\n\nselect * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO\nselect * from business_processes where crm_configuration_id = 39;\n# 01941000000H669AAC, 01941000000H66JAAS\n\nselect * from record_type_field_values\n where record_type_id IN (24);\n\nselect * from crm_field_values where id IN (2730);\n\nselect * from crm_configurations where id = 39;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce'; #1035\n\n\nselect * from users where team_id = 1; # 222 group 3\nSELECT * FROM activities WHERE user_id = 222 order by id desc;\nselect * from sidekick_settings where team_id = 1;\nselect * from teams where id = 1;\nselect * from team_features where team_id = 1;\n\nselect * from activities where crm_configuration_id = 2\nand provider = 'ms-teams' and id = 608765;\n\nSELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';\n\nselect * from sidekick_settings where team_id = 2;\n\nSELECT * FROM activities WHERE id = 608660;\nselect * from activity_summary_logs where activity_id = 608660;\nselect * from ai_prompts where transcription_id = 11214;\n\n# ********************************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;\n# id: 608818, crm: 59628809737\nSELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;\n# id: 608821, crm: 59632069252\nSELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,\nplaybook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,\nscheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at\nFROM activities a\njoin calendar_events ce on a.calendar_event_id = ce.id\nWHERE a.id IN (608818, 608821);\n\nselect * from users where team_id = 1;\nselect * from team_settings where team_id = 1;\nselect * from crm_profiles where crm_configuration_id = 39 order by user_id;\n\nselect * from team_features where team_id = 1;\n\nselect * from users where team_id = 2;\n\nSELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639\n# Preslava N. Ivanova, grou id 3\n\nSELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;\n\nselect * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';\n\nselect\n a.id,\n a.type,\n a.scheduled_start_time,\n a.actual_start_time,\n a.created_at,\n a.opportunity_id,\n a.status\nFROM activities a\nWHERE opportunity_id = 344\nand status IN ('completed', 'received', 'delivered')\nand (\n (a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')\nOR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))\n;\n\nSELECT * FROM users WHERE id = 222;\n\nSELECT * FROM crm_profiles WHERE user_id = 222;\nselect * from crm_layouts where crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;\n\nselect * from group_deal_risk_types;\n\nselect * from opportunities where team_id = 1;\n\nSELECT * FROM opportunities WHERE id = 315;\nSELECT * FROM crm_field_data WHERE object_id = 315;\nselect * from crm_field_data where object_id = 260;\n\nselect * from generic_ai_prompts where subject_id = 315;\n\nselect * from teams; # 36, 21, 121, james.graham@bullhorn.jiminny.com\nSELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';\n\n# ************************************************************************************\nselect * from teams where id = 1;\nselect * from crm_configurations where id = 39;\nselect * from users where team_id = 1;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 1;\n# 1 - 00541000004281rAAA\n# 204 - 0052g000003freeAAA\n# 429 - 0052g000003qGOiAAM\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\nselect * from activities where type = 'softphone'\nand created_at > '2024-12-11 15:24:36' order by id desc;\n\nselect * from activity_providers where team_id = 1;\nselect * from activity_provider_users where activity_provider_id = 328;\n\nselect * from opportunities where crm_configuration_id = 39\nAND account_id = 178 AND is_closed = false\norder by created_at DESC;\n\nselect * from contacts where id = 3952;\nselect * from accounts where id = 178;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations where id = 21;\nselect * from users where team_id = 36;\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 36;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 36\nand sa.provider = 'bullhorn';\n\nselect * from social_accounts where id = 348;\nUPDATE social_accounts SET\nprovider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',\nprovider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',\nexpires = 1733998131,\nstate = 'connected'\nWHERE id = 348;\n\n# ************************************************************************************\nselect * from teams where id = 31;\nselect * from crm_configurations where id = 18;\n\nselect * from users where team_id = 31; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 31;\n\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 31\nand sa.provider = 'close';\n\nselect * from contacts where crm_configuration_id = 18;\n\n# ********************** NEPTUNE **************************************************************\nselect * from teams;\nselect * from users where id IN (1030, 1035, 1052);\nselect * from crm_configurations;\n\nselect * from users where team_id = 65; # 257\nselect * from team_settings where team_id = 65; # 257\nselect * from invitations where team_id = 65; # 257\nselect * from users where email = 'integration-account@jiminny.com'; # 257\nselect u.email, cp.* from users u\njoin crm_profiles cp on u.id = cp.user_id\nwhere u.team_id = 65;\n\nselect * from crm_configurations where id = 53;\nselect * from accounts where crm_configuration_id = 53 order by id desc;\nselect * from leads where crm_configuration_id = 53 order by id desc;\nselect * from contacts where crm_configuration_id = 53 order by id desc;\nselect * from opportunities where crm_configuration_id = 53 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 53 order by id desc;\nselect * from crm_fields where crm_configuration_id = 53 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 53 order by id desc;\nselect * from stages where crm_configuration_id = 53 order by id desc;\n\n\nselect * from crm_profiles where crm_configuration_id = 13;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\nand sa.provider = 'integration-app';\n\nselect * from contacts where crm_configuration_id = 13;\n\nselect * from social_accounts where sociable_id = 283;\n\nSELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';\n\nselect * from activity_providers where team_id = 65;\nSELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 65\n;\n\n# ***************************** STAGING ********************************************\nSELECT * FROM teams;\nSELECT * FROM teams WHERE id = 88;\nSELECT * FROM teams WHERE id = 89;\nselect * from team_settings where team_id = 89;\nSELECT * FROM users WHERE team_id = 89;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 89;\n\nselect * from users;\nSELECT * FROM social_accounts WHERE sociable_id = 1761;\nSELECT * FROM crm_configurations WHERE id = 70;\nselect * from accounts where crm_configuration_id = 70 order by id desc;\nselect * from leads where crm_configuration_id = 70 order by id desc;\nselect * from contacts where crm_configuration_id = 70 order by id desc;\nselect * from opportunities where crm_configuration_id = 70 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 70 order by id desc;\nselect * from crm_fields where crm_configuration_id = 70 order by id desc;\nselect * from crm_field_values where crm_field_id = 3536 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 70 order by id desc;\nselect * from stages where crm_configuration_id = 70 order by id desc;\nselect * from business_processes where crm_configuration_id = 70 order by id desc;\nselect * from business_process_stages where business_process_id = 34;\n\nselect * from contacts where id = 10468;\n\nselect * from crm_layouts where crm_configuration_id = 70;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;\nSELECT * FROM crm_fields WHERE id IN (3533,3534,3535);\n\nselect * from activities where crm_configuration_id = 70\nand (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;\n\nSELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;\nSELECT * FROM activities where crm_configuration_id = 69 ;\n\nSELECT * FROM users WHERE email LIKE '%jiminny_web_sa2@jiminny.com%';\nSELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;\nSELECT * FROM opportunities WHERE id = 385;\n\nselect * from participants p\njoin activities a on p.activity_id = a.id\nwhere a.crm_configuration_id = 70\nand (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);\nSELECT * FROM participants WHERE id = 1013638;\n\nselect * from teams where id = 90;\nselect * from users where team_id = 90;\nselect * from social_accounts where social_accounts.sociable_id IN (1960,1760);\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 71;\nselect * from invitations where team_id = 90;\n\nselect * from crm_configurations where id = 71;\nselect * from accounts where crm_configuration_id = 71 order by id desc;\nselect * from leads where crm_configuration_id = 71 order by id desc;\nselect * from contacts where crm_configuration_id = 71 order by id desc;\nselect * from opportunities where crm_configuration_id = 71 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 71 order by id desc;\nselect * from crm_fields where crm_configuration_id = 71 order by id desc;\nselect * from crm_field_values where crm_field_id = 3341 order by id desc;\nselect * from crm_layouts where crm_configuration_id = 71 order by id desc;\nselect * from stages where crm_configuration_id = 71 order by id desc;\n\nselect * from users order by secondary_email desc;\nselect u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa\n join users u on sa.sociable_id = u.id\nwhere sa.provider = 'google' and u.email LIKE 'aneliya%';\n\nselect * from failed_jobs order by id desc;\n\nselect * from users where email = 'ben.allwright@learningpeople.co.uk' or secondary_email = 'ben.allwright@learningpeople.co.uk';\n\nselect * from teams;\nSELECT * FROM crm_profiles WHERE crm_configuration_id = 39;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 1\nand sa.provider = 'salesforce';\n\n# ************************************************************************************\nSELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;\nSELECT * FROM crm_configurations WHERE id = 70;\n\nselect * from teams where id = 1;\nselect * from groups where team_id = 1;\nselect * from users where team_id = 1;\n\nselect o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o\njoin users u on o.user_id = u.id\njoin groups g on u.group_id = g.id\njoin role_user ru on u.id = ru.user_id\njoin roles r on ru.role_id = r.id\nwhere o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';\n\nselect * from role_user where user_id = 143;\nselect * from roles;\n\nselect * from role_user;\nselect * from groups where id = 9;\nselect * from scope_groups where group_id = 9;\n\n# ************************************************************************************\nselect * from teams where id = 36;\nselect * from crm_configurations;\nSELECT * FROM social_accounts WHERE sociable_id = 121;\n\nhttps://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105\nhttps://crmsandbox.zoho.com/crm/\n\nhttps://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080\n https://crm.zoho.com/crm/\n org3469620\n\nSELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;\n\nselect * from users where email LIKE \"%mobile_automation_%\";\nselect * from social_accounts where sociable_id IN (2228);\nselect * from crm_profiles where user_id IN (2222,2223,2226,2227);\n\nselect * from teams order by id desc;\nSELECT * FROM users WHERE id = 2229;\nSELECT * FROM crm_profiles WHERE user_id = 2229;\nselect * from opportunities where crm_configuration_id = 88;\nselect * from crm_fields where crm_configuration_id = 88;\nselect * from crm_profiles where crm_configuration_id = 88;\n\nSELECT * FROM teams WHERE id = 1;\n\nSELECT * FROM users WHERE id = 143;\nSELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;\n\nhttps://app.staging.jiminny.com/ondemand?\n min_duration=1\n &\n only_recorded=1\n &\n user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e\n &\n sequence_number=2\n\n select * from users where team_id = 1 and email like '%stoyan%'\n\nselect * from coaching_feedbacks;\n\nselect * from teams;\nSELECT * FROM users WHERE team_id = 36;\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from users where id = 143;\n\nSELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\nSELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;\n\nselect * from users where team_id = 2;\nselect * from activities where crm_configuration_id = 39\nand activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'\nAND user_id = 143\norder by id desc;\n\n# ************************************************************************************\nselect * from teams where id = 142; # 2312, 126\nselect * from team_settings;\nselect * from users where team_id = 142; # 21642\nSELECT * FROM social_accounts WHERE sociable_id = 21642;\nSELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;\nselect * from crm_profiles where id IN (93);\nselect * from invitations;\nselect * from team_features where team_id = 1;\n\nSELECT * FROM crm_configurations WHERE id = 126;\nselect * from accounts where crm_configuration_id = 126 order by id desc;\nselect * from leads where crm_configuration_id = 126 order by id desc;\nselect * from contacts where crm_configuration_id = 126 order by id desc;\nselect * from opportunities where crm_configuration_id = 126 order by id desc;\nselect * from crm_profiles where crm_configuration_id = 126 order by id desc;\nselect * from crm_fields where crm_configuration_id = 126 # 11060\n# and type IN ('picklist', 'status')\n# and object_type = 'task'\norder by id desc;\n# 5731,5732,5733\nselect DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;\nselect * from crm_layouts where crm_configuration_id = 126 order by id desc;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);\nselect * from stages where crm_configuration_id = 126 order by id desc;\nselect * from business_processes where crm_configuration_id = 126 order by id desc;\nselect * from business_process_stages where business_process_id IN (76,75,74,73);\nselect * from playbooks where team_id = 142;\nselect * from playbook_layouts where playbook_id IN (108);\nSELECT * FROM playbook_categories WHERE playbook_id IN (108);\n\nselect * from teams where id = 130;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 2\nand sa.provider = 'hubspot';\n\nSELECT * FROM activities\n WHERE crm_configuration_id = 110;\n\nselect * from teams;\nselect * from crm_configurations;\n\nSELECT * FROM activities WHERE id = 628773;\nSELECT * FROM crm_profiles WHERE user_id = 1460;\nSELECT * FROM social_accounts WHERE sociable_id = 2291;\n\nselect * from teams;\nselect ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id\njoin permission_role pr on pr.role_id = ru.role_id\n join permissions p on p.id = pr.permission_id\nwhere team_id = 495 and p.name IN ('dial');\n\nselect * from teams where id = 145;\nselect * from crm_configurations where id = 129;\nselect * from social_accounts where sociable_id = 2317;\nSELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;\n\nselect * from teams where id = 1;\nSELECT * FROM crm_layouts WHERE crm_configuration_id = 39;\nSELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;\nSELECT * FROM crm_layout_entities WHERE id = 5507;\nSELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');\n\nselect * from teams;\nselect * from activities where crm_configuration_id = 14;\n\nSELECT * FROM social_accounts where provider = 'copper';\n\nselect * from activities where id = 628467;\nselect * from participants where activity_id = 628467;\n\nSELECT * FROM contacts WHERE id = 3969;\nSELECT * FROM accounts WHERE id = 177;\n\nSELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;\n\n# ********************* BH\nselect * from teams where id = 36;\nSELECT * FROM crm_configurations WHERE id = 21;\nselect * from activities where crm_configuration_id = 21 and id = 607901;\nselect * from activities where crm_configuration_id = 21;\n\nselect * roles;\nselect * from permissions;\nselect * from permission_role where permission_id = 226;\n\nselect * from migrations order by id desc;\n\n# mercury\n# neptune\n# earth\n\nselect * from teams;\nselect * from teams where id = 19;\nselect * from teams where id = 27;\nselect * from users where team_id = 27;\nSELECT * FROM crm_configurations WHERE id = 42;\n\nselect * from social_accounts sa\njoin users u on sa.sociable_id = u.id\nwhere u.team_id = 19\nand sa.provider = 'pipedrive';\n\nselect * from activities where id = 631461;\nSELECT * FROM crm_field_values WHERE crm_field_id = 180;\n\nselect * from teams where id = 2;\nSELECT * FROM social_accounts WHERE sociable_id = 89;\n\nSELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273\nselect * from activity_summary_logs where activity_id = 634273;\n\nselect * from sidekick_settings where team_id = 2;\n\nselect * from teams; # 2, 2\nSELECT * FROM crm_configurations WHERE team_id = 2; # 2\nselect * from team_features where team_id = 2;\nselect * from features;\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';\nSELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;\n\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from users where team_id = 1 and id IN (7160, 3248);\nselect * from migrations order by 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 = 1 and sa.provider = 'salesforce';\n\nselect * from teams where id = 1;\nselect * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;\nselect * from groups where id = 565;\nselect * from playbooks where team_id = 1;\nselect * from playbooks where id = 175;\nselect * from playbook_categories where playbook_id = 175;\nselect * from users where team_id = 1;\nselect * from users where id = 7160;\nselect * from crm_profiles where user_id = 7160;\nselect * from features;\nselect\n *\n# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,\n# crm_configuration_id, crm_provider_id, transcription_id, status\nfrom activities where crm_configuration_id = 1 and type = 'conference'\n# and crm_provider_id IS NOT NULL\nand provider != 'uploader' and actual_start_time IS NOT NULL\nORDER by id desc;\nselect * from activities where id = 54747783; # 00UO400000pCzojMAC\n\nselect p.id, p.activity_type, pc.id, pc.name\nFROM playbooks p\njoin playbook_categories pc on p.id = pc.playbook_id\nwhere p.team_id = 1 and p.activity_type = 'event';\n\nSELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';\nSELECT * FROM crm_field_values WHERE crm_field_id = 4;\n\nselect * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id\nwhere crm_configuration_id = 1 and pl.playbook_id = 175;\n\nselect * from teams;\nSELECT r.* FROM automated_reports r\njoin teams t on r.team_id = t.id\nWHERE r.frequency = 'daily'\n and r.status = 1\nAND t.status = 'active'\nAND (r.expires_at >= now() OR r.expires_at IS NULL);\n\nselect * from automated_report_results where report_id IN (18, 33);\n\nselect * from activity_searches where id = 10932;\nselect * from activity_search_filters where activity_search_id = 10932;\nselect * from automated_reports order by id desc;\nselect * from automated_report_results order by id desc;\nselect * from automated_report_results where report_id IN (37);\nselect * from users where id IN (7160, 3248);\n\nSELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"New File or Directory…","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-7465795543963075308
|
6686367547760489549
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
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
18
16
13
Previous Highlighted Error
Next Highlighted Error
SELECT * FROM teams WHERE id = 1;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 283;
SELECT * FROM crm_fields WHERE id = 2234;
SELECT * FROM crm_field_values WHERE crm_field_id = 2234;
select * from crm_profiles where user_id = 143;
select * from record_types where crm_configuration_id = 39; # 0121K000001MHElQAO,0121K000001MHEqQAO
select * from business_processes where crm_configuration_id = 39;
# 01941000000H669AAC, 01941000000H66JAAS
select * from record_type_field_values
where record_type_id IN (24);
select * from crm_field_values where id IN (2730);
select * from crm_configurations where id = 39;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce'; #1035
select * from users where team_id = 1; # 222 group 3
SELECT * FROM activities WHERE user_id = 222 order by id desc;
select * from sidekick_settings where team_id = 1;
select * from teams where id = 1;
select * from team_features where team_id = 1;
select * from activities where crm_configuration_id = 2
and provider = 'ms-teams' and id = 608765;
SELECT * FROM activities WHERE crm_configuration_id = 2 and crm_provider_id = '59523413338';
select * from sidekick_settings where team_id = 2;
SELECT * FROM activities WHERE id = 608660;
select * from activity_summary_logs where activity_id = 608660;
select * from ai_prompts where transcription_id = 11214;
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('ed78a437-2804-450e-ab2f-56ab1c641346') = uuid;
# id: 608818, crm: 59628809737
SELECT * FROM activities WHERE uuid_to_bin('36b06e55-afdd-4782-8dee-c624cd0af191') = uuid;
# id: 608821, crm: 59632069252
SELECT ce.start_time, ce.end_time, a.id, a.uuid, crm_provider_id, calendar_event_id, title,
playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id,
scheduled_start_time, scheduled_end_time, actual_start_time, actual_end_time, a.created_at
FROM activities a
join calendar_events ce on a.calendar_event_id = ce.id
WHERE a.id IN (608818, 608821);
select * from users where team_id = 1;
select * from team_settings where team_id = 1;
select * from crm_profiles where crm_configuration_id = 39 order by user_id;
select * from team_features where team_id = 1;
select * from users where team_id = 2;
SELECT * FROM activities WHERE uuid_to_bin('ec7647e9-5225-458b-b475-f31aa2769204') = uuid; # 612639
# Preslava N. Ivanova, grou id 3
SELECT * FROM opportunities WHERE uuid_to_bin('a2928fe5-aec5-46cb-85d9-7654c89e46a6') = uuid;
select * from activities where opportunity_id = 344 and actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00';
select
a.id,
a.type,
a.scheduled_start_time,
a.actual_start_time,
a.created_at,
a.opportunity_id,
a.status
FROM activities a
WHERE opportunity_id = 344
and status IN ('completed', 'received', 'delivered')
and (
(a.actual_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.created_at between '2024-10-11 00:00:00' and '2024-10-12 00:00:00')
OR (a.scheduled_start_time between '2024-10-11 00:00:00' and '2024-10-12 00:00:00'))
;
SELECT * FROM users WHERE id = 222;
SELECT * FROM crm_profiles WHERE user_id = 222;
select * from crm_layouts where crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 281;
select * from group_deal_risk_types;
select * from opportunities where team_id = 1;
SELECT * FROM opportunities WHERE id = 315;
SELECT * FROM crm_field_data WHERE object_id = 315;
select * from crm_field_data where object_id = 260;
select * from generic_ai_prompts where subject_id = 315;
select * from teams; # 36, 21, 121, [EMAIL]
SELECT * FROM social_accounts WHERE sociable_id = 121 and provider = 'bullhorn';
# [PASSWORD_DOTS]
select * from teams where id = 1;
select * from crm_configurations where id = 39;
select * from users where team_id = 1;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 1;
# 1 - 00541000004281rAAA
# 204 - 0052g000003freeAAA
# 429 - 0052g000003qGOiAAM
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
select * from activities where type = 'softphone'
and created_at > '2024-12-11 15:24:36' order by id desc;
select * from activity_providers where team_id = 1;
select * from activity_provider_users where activity_provider_id = 328;
select * from opportunities where crm_configuration_id = 39
AND account_id = 178 AND is_closed = false
order by created_at DESC;
select * from contacts where id = 3952;
select * from accounts where id = 178;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations where id = 21;
select * from users where team_id = 36;
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 36
and sa.provider = 'bullhorn';
select * from social_accounts where id = 348;
UPDATE social_accounts SET
provider_user_token = '21442_6802599_91:41179a58-21e7-4d7c-ad58-56bb666b2f65',
provider_refresh_token = '21442_6802599_91:01c6b335-3f2a-42e4-85ff-8a08fa65fceb',
expires = 1733998131,
state = 'connected'
WHERE id = 348;
# [PASSWORD_DOTS]
select * from teams where id = 31;
select * from crm_configurations where id = 18;
select * from users where team_id = 31; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 31;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 31
and sa.provider = 'close';
select * from contacts where crm_configuration_id = 18;
# [PASSWORD_DOTS] NEPTUNE [PASSWORD_DOTS]
select * from teams;
select * from users where id IN (1030, 1035, 1052);
select * from crm_configurations;
select * from users where team_id = 65; # 257
select * from team_settings where team_id = 65; # 257
select * from invitations where team_id = 65; # 257
select * from users where email = '[EMAIL]'; # 257
select u.email, cp.* from users u
join crm_profiles cp on u.id = cp.user_id
where u.team_id = 65;
select * from crm_configurations where id = 53;
select * from accounts where crm_configuration_id = 53 order by id desc;
select * from leads where crm_configuration_id = 53 order by id desc;
select * from contacts where crm_configuration_id = 53 order by id desc;
select * from opportunities where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 53 order by id desc;
select * from crm_fields where crm_configuration_id = 53 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 53 order by id desc;
select * from stages where crm_configuration_id = 53 order by id desc;
select * from crm_profiles where crm_configuration_id = 13;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
and sa.provider = 'integration-app';
select * from contacts where crm_configuration_id = 13;
select * from social_accounts where sociable_id = 283;
SELECT * FROM opportunities WHERE crm_provider_id = '006O400000E9bzeIAB';
select * from activity_providers where team_id = 65;
SELECT * FROM activities WHERE crm_configuration_id IN (51, 52, 53);
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 65
;
# [PASSWORD_DOTS] STAGING [PASSWORD_DOTS]
SELECT * FROM teams;
SELECT * FROM teams WHERE id = 88;
SELECT * FROM teams WHERE id = 89;
select * from team_settings where team_id = 89;
SELECT * FROM users WHERE team_id = 89;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 89;
select * from users;
SELECT * FROM social_accounts WHERE sociable_id = 1761;
SELECT * FROM crm_configurations WHERE id = 70;
select * from accounts where crm_configuration_id = 70 order by id desc;
select * from leads where crm_configuration_id = 70 order by id desc;
select * from contacts where crm_configuration_id = 70 order by id desc;
select * from opportunities where crm_configuration_id = 70 order by id desc;
select * from crm_profiles where crm_configuration_id = 70 order by id desc;
select * from crm_fields where crm_configuration_id = 70 order by id desc;
select * from crm_field_values where crm_field_id = 3536 order by id desc;
select * from crm_layouts where crm_configuration_id = 70 order by id desc;
select * from stages where crm_configuration_id = 70 order by id desc;
select * from business_processes where crm_configuration_id = 70 order by id desc;
select * from business_process_stages where business_process_id = 34;
select * from contacts where id = 10468;
select * from crm_layouts where crm_configuration_id = 70;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 388;
SELECT * FROM crm_fields WHERE id IN (3533,3534,3535);
select * from activities where crm_configuration_id = 70
and (account_id IS NOT NULL or lead_id IS NOT NULL or contact_id IS NOT NULL or opportunity_id IS NOT NULL) order by id desc;
SELECT * FROM activities WHERE uuid_to_bin('2e10b60f-8a61-41c5-a3d4-28835353dc65') = uuid;
SELECT * FROM activities where crm_configuration_id = 69 ;
SELECT * FROM users WHERE email LIKE '%[EMAIL]%';
SELECT * FROM activities WHERE uuid_to_bin('5a150c93-40fc-42ec-b3bd-c1d328e09f6e') = uuid;
SELECT * FROM opportunities WHERE id = 385;
select * from participants p
join activities a on p.activity_id = a.id
where a.crm_configuration_id = 70
and (p.lead_id IS NOT NULL or p.contact_id IS NOT NULL);
SELECT * FROM participants WHERE id = 1013638;
select * from teams where id = 90;
select * from users where team_id = 90;
select * from social_accounts where social_accounts.sociable_id IN (1960,1760);
SELECT * FROM crm_profiles WHERE crm_configuration_id = 71;
select * from invitations where team_id = 90;
select * from crm_configurations where id = 71;
select * from accounts where crm_configuration_id = 71 order by id desc;
select * from leads where crm_configuration_id = 71 order by id desc;
select * from contacts where crm_configuration_id = 71 order by id desc;
select * from opportunities where crm_configuration_id = 71 order by id desc;
select * from crm_profiles where crm_configuration_id = 71 order by id desc;
select * from crm_fields where crm_configuration_id = 71 order by id desc;
select * from crm_field_values where crm_field_id = 3341 order by id desc;
select * from crm_layouts where crm_configuration_id = 71 order by id desc;
select * from stages where crm_configuration_id = 71 order by id desc;
select * from users order by secondary_email desc;
select u.id, u.email, u.status, sa.id, sa.provider_user_id from social_accounts sa
join users u on sa.sociable_id = u.id
where sa.provider = 'google' and u.email LIKE 'aneliya%';
select * from failed_jobs order by id desc;
select * from users where email = '[EMAIL]' or secondary_email = '[EMAIL]';
select * from teams;
SELECT * FROM crm_profiles WHERE crm_configuration_id = 39;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type = 'task';
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 1
and sa.provider = 'salesforce';
# [PASSWORD_DOTS]
SELECT * FROM activities WHERE uuid_to_bin('c38b3895-fd0f-4b1f-9fb2-c170dba137c6') = uuid;
SELECT * FROM crm_configurations WHERE id = 70;
select * from teams where id = 1;
select * from groups where team_id = 1;
select * from users where team_id = 1;
select o.id, o.name,o.close_date, u.id, u.name, u.group_id, r.id, r.display_name, g.name, g.scope from opportunities o
join users u on o.user_id = u.id
join groups g on u.group_id = g.id
join role_user ru on u.id = ru.user_id
join roles r on ru.role_id = r.id
where o.crm_configuration_id = 39 and close_date > '2024-01-01 00:00:00';
select * from role_user where user_id = 143;
select * from roles;
select * from role_user;
select * from groups where id = 9;
select * from scope_groups where group_id = 9;
# [PASSWORD_DOTS]
select * from teams where id = 36;
select * from crm_configurations;
SELECT * FROM social_accounts WHERE sociable_id = 121;
https://crmsandbox.zoho.com/crm/jiminnyw4/tab/Leads/4776201000005049105
https://crmsandbox.zoho.com/crm/
https://crm.zoho.com/crm/org3469620/tab/Leads/230045000229559080
https://crm.zoho.com/crm/
org3469620
SELECT * FROM activities WHERE uuid_to_bin('03382d20-c8bc-48e7-a3d4-90b52fa5ceab') = uuid;
select * from users where email LIKE "%mobile_automation_%";
select * from social_accounts where sociable_id IN (2228);
select * from crm_profiles where user_id IN (2222,2223,2226,2227);
select * from teams order by id desc;
SELECT * FROM users WHERE id = 2229;
SELECT * FROM crm_profiles WHERE user_id = 2229;
select * from opportunities where crm_configuration_id = 88;
select * from crm_fields where crm_configuration_id = 88;
select * from crm_profiles where crm_configuration_id = 88;
SELECT * FROM teams WHERE id = 1;
SELECT * FROM users WHERE id = 143;
SELECT * FROM users WHERE uuid_to_bin('fde193d3-06a2-4e1a-8895-62b94039215d') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73385071-a756-42ae-9c73-8b53f2309467') = uuid;
https://app.staging.jiminny.com/ondemand?
min_duration=1
&
only_recorded=1
&
user_id%5B%5D=641f1acb-16b8-42d1-8726-df52979dad0e
&
sequence_number=2
select * from users where team_id = 1 and email like '%stoyan%'
select * from coaching_feedbacks;
select * from teams;
SELECT * FROM users WHERE team_id = 36;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from users where id = 143;
SELECT * FROM users WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM teams WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
SELECT * FROM activity_shares WHERE uuid_to_bin('73180eeb-33de-4065-977d-ccbe0e6c94fc') = uuid;
select * from users where team_id = 2;
select * from activities where crm_configuration_id = 39
and activities.scheduled_start_time BETWEEN '2025-04-09 00:00:00' AND '2025-04-09 23:59:59'
AND user_id = 143
order by id desc;
# [PASSWORD_DOTS]
select * from teams where id = 142; # 2312, 126
select * from team_settings;
select * from users where team_id = 142; # 21642
SELECT * FROM social_accounts WHERE sociable_id = 21642;
SELECT * FROM crm_profiles cp join users u ON u.id = cp.user_id WHERE team_id = 142;
select * from crm_profiles where id IN (93);
select * from invitations;
select * from team_features where team_id = 1;
SELECT * FROM crm_configurations WHERE id = 126;
select * from accounts where crm_configuration_id = 126 order by id desc;
select * from leads where crm_configuration_id = 126 order by id desc;
select * from contacts where crm_configuration_id = 126 order by id desc;
select * from opportunities where crm_configuration_id = 126 order by id desc;
select * from crm_profiles where crm_configuration_id = 126 order by id desc;
select * from crm_fields where crm_configuration_id = 126 # 11060
# and type IN ('picklist', 'status')
# and object_type = 'task'
order by id desc;
# 5731,5732,5733
select DISTINCT crm_field_id from crm_field_values where crm_field_id IN (11151,12239,12215,12185,12175,12165,12144,12137,12127,12109,12107,12105,12103,12092,12037,12005,12003,11987,11969,11958,11951,11942,11931,11924,11921,11917,11915,11901,11893,11883,11872,11870,11868,11866,11839,11833,11821,11793,11780,11777,11769,11757,11737,11735,11656,11645,11638,11629,11618,11611,11602,11591,11584,11581,11558,11544,11543,11534,11532,11529,11527,11503,11497,11493,11488,11470,11468,11457,11455,11397,11387,11372,11363,11348,11323,11318,11309,11301,11300,11292,11290,11286,11284,11256,11252,11242,11237,11233,11219,11176,11160) order by id desc;
select * from crm_layouts where crm_configuration_id = 126 order by id desc;
SELECT * FROM crm_layout_entities WHERE crm_layout_id in (300,299,298);
select * from stages where crm_configuration_id = 126 order by id desc;
select * from business_processes where crm_configuration_id = 126 order by id desc;
select * from business_process_stages where business_process_id IN (76,75,74,73);
select * from playbooks where team_id = 142;
select * from playbook_layouts where playbook_id IN (108);
SELECT * FROM playbook_categories WHERE playbook_id IN (108);
select * from teams where id = 130;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 2
and sa.provider = 'hubspot';
SELECT * FROM activities
WHERE crm_configuration_id = 110;
select * from teams;
select * from crm_configurations;
SELECT * FROM activities WHERE id = 628773;
SELECT * FROM crm_profiles WHERE user_id = 1460;
SELECT * FROM social_accounts WHERE sociable_id = 2291;
select * from teams;
select ru.*, pr.*, p.* from users u join role_user ru on ru.user_id = u.id
join permission_role pr on pr.role_id = ru.role_id
join permissions p on p.id = pr.permission_id
where team_id = 495 and p.name IN ('dial');
select * from teams where id = 145;
select * from crm_configurations where id = 129;
select * from social_accounts where sociable_id = 2317;
SELECT * FROM activities WHERE uuid_to_bin('8dbab184-a333-4268-ad57-fb41f8d53a9a') = uuid;
select * from teams where id = 1;
SELECT * FROM crm_layouts WHERE crm_configuration_id = 39;
SELECT * FROM crm_layout_entities WHERE crm_layout_id = 280;
SELECT * FROM crm_layout_entities WHERE id = 5507;
SELECT * FROM crm_fields WHERE crm_configuration_id = 39 and object_type IN ('event');
select * from teams;
select * from activities where crm_configuration_id = 14;
SELECT * FROM social_accounts where provider = 'copper';
select * from activities where id = 628467;
select * from participants where activity_id = 628467;
SELECT * FROM contacts WHERE id = 3969;
SELECT * FROM accounts WHERE id = 177;
SELECT * FROM activities WHERE uuid_to_bin('4eb54c77-cfa3-2bd4-84a7-9ed46a21c988') = uuid;
# [PASSWORD_DOTS] BH
select * from teams where id = 36;
SELECT * FROM crm_configurations WHERE id = 21;
select * from activities where crm_configuration_id = 21 and id = 607901;
select * from activities where crm_configuration_id = 21;
select * roles;
select * from permissions;
select * from permission_role where permission_id = 226;
select * from migrations order by id desc;
# mercury
# neptune
# earth
select * from teams;
select * from teams where id = 19;
select * from teams where id = 27;
select * from users where team_id = 27;
SELECT * FROM crm_configurations WHERE id = 42;
select * from social_accounts sa
join users u on sa.sociable_id = u.id
where u.team_id = 19
and sa.provider = 'pipedrive';
select * from activities where id = 631461;
SELECT * FROM crm_field_values WHERE crm_field_id = 180;
select * from teams where id = 2;
SELECT * FROM social_accounts WHERE sociable_id = 89;
SELECT * FROM activities WHERE uuid_to_bin('ba0c029a-bc14-4e17-8603-64174acebcbb') = uuid; # 634273
select * from activity_summary_logs where activity_id = 634273;
select * from sidekick_settings where team_id = 2;
select * from teams; # 2, 2
SELECT * FROM crm_configurations WHERE team_id = 2; # 2
select * from team_features where team_id = 2;
select * from features;
SELECT * FROM opportunities WHERE crm_configuration_id = 2 and crm_provider_id = '51317301383';
SELECT * FROM opportunities WHERE crm_configuration_id = 2 order by id desc;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from users where team_id = 1 and id IN (7160, 3248);
select * from migrations order by 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 = 1 and sa.provider = 'salesforce';
select * from teams where id = 1;
select * from groups g JOIN playbooks p on g.playbook_id = p.id where g.team_id = 1;
select * from groups where id = 565;
select * from playbooks where team_id = 1;
select * from playbooks where id = 175;
select * from playbook_categories where playbook_id = 175;
select * from users where team_id = 1;
select * from users where id = 7160;
select * from crm_profiles where user_id = 7160;
select * from features;
select
*
# id, uuid, type, provider, playbook_category_id, user_id, lead_id, contact_id, account_id, opportunity_id, stage_id,
# crm_configuration_id, crm_provider_id, transcription_id, status
from activities where crm_configuration_id = 1 and type = 'conference'
# and crm_provider_id IS NOT NULL
and provider != 'uploader' and actual_start_time IS NOT NULL
ORDER by id desc;
select * from activities where id = 54747783; # 00UO400000pCzojMAC
select p.id, p.activity_type, pc.id, pc.name
FROM playbooks p
join playbook_categories pc on p.id = pc.playbook_id
where p.team_id = 1 and p.activity_type = 'event';
SELECT * FROM crm_fields WHERE crm_configuration_id = 1 and object_type = 'event';
SELECT * FROM crm_field_values WHERE crm_field_id = 4;
select * from crm_layouts cl join playbook_layouts pl on cl.id = pl.layout_id
where crm_configuration_id = 1 and pl.playbook_id = 175;
select * from teams;
SELECT r.* FROM automated_reports r
join teams t on r.team_id = t.id
WHERE r.frequency = 'daily'
and r.status = 1
AND t.status = 'active'
AND (r.expires_at >= now() OR r.expires_at IS NULL);
select * from automated_report_results where report_id IN (18, 33);
select * from activity_searches where id = 10932;
select * from activity_search_filters where activity_search_id = 10932;
select * from automated_reports order by id desc;
select * from automated_report_results order by id desc;
select * from automated_report_results where report_id IN (37);
select * from users where id IN (7160, 3248);
SELECT * FROM automated_reports WHERE uuid_to_bin('18a06a75-afd2-476f-aadc-14d4057bdda2') = uuid;
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
34727
|
|
34810
|
NULL
|
0
|
2026-04-16T09:13:02.598265+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330782598_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 47 m100% <478Thu 16 Apr 12:13:02-zsh181DOCKERO 8812026-04-16711:36:48.650708Z2026-04-16T11:36:52.354970Z2026-04-16T11:36:58.181767Z2026-04-16111:36:58.52372222026-04-16T11:37:20.170219Z2026-04-16T11:37:56.882597Z2026-04-16T11:42:00.309082Z\nFROM\nframes\nWHERE\nd-1.772983458s2026-04-16T11:42:00.309197Z2026-04-16711:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes\nWHERE\n=3.464891083s2026-04-16T11:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes\nWHERE\nd=2.425023041s2026-04-16T12:02:32.933357Z2026-64-16112:02:39.40972172026-04-16T12:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16T12:07:55.949632Z2026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16T12:12:58.921555Z\nFROM\nframes\nWHERE\n=2.123106542s2026-04-16T12:12:58.922167Z2026-04-16T12:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16T12:13:01.327453ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 285-zsh86-zsh₴7* Unable to acce...O x8INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 164eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 62 frames,20.4MB → 2.3MB(9.1x),62 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 99 frames,17.2MB → 5.3MB (3.2x),99 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 1 frames,0.3MB → 0.4MB (0.8x), 1 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::event.driven_capture: content dedup: skippingcapture for monitor 2 Chash=-8093524035767003282,WARNsqlx::query:summary="SELECT id,snapshot_path, device_name, _"db.statement="\n\nSELECT\ntrigger=visual_change)id, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=102 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 102 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 42 frames,13.9MB → 3.1MB (4.5X), 42 JPEGSdeletedscreenpipe_engine::snapshot_compaction: snapshotcompaction: 57 frames,12. 6MB → 6.2MB (2.0x), 57 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 70eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB → 1.OMB (9.2x), 26 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:42 frames,10.5MB4.7MB (2.2x), 42 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:WARNsalx::query:skipping capture for monitor 1 (hash=-7465795543963075308, trigger=click)summary="SELECT id,snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=61 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 28 frames, 9.6MB → 1.4MB (6.7x), 28 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 8.9MB → 2.1MB (4.2x), 31 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 33eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 5.2MB → 1.1MB (4.8x), 15 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames,4.6MB+ 1.2MB (3.8x), 16 JPEGs deletedWARNsalx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=112 elapseINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames,14.5MB → 2.7MB (5.4x), 49 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 13.6MB + 4.6MB(2.9x),61 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 3.4MB → 0.8MB (4.4x), 10 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.7MB 0.4MB (6.4x), 10 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=visual_change)WARN sqlx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected=0 rows_returned-64 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 64eligible framesWARNIsalx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned=1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames,INFO8.6MB → 1.3MB (6.8x), 25 JPEGs deletedscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860, trigger=click)...
|
NULL
|
-4790896566062390032
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 47 m100% <478Thu 16 Apr 12:13:02-zsh181DOCKERO 8812026-04-16711:36:48.650708Z2026-04-16T11:36:52.354970Z2026-04-16T11:36:58.181767Z2026-04-16111:36:58.52372222026-04-16T11:37:20.170219Z2026-04-16T11:37:56.882597Z2026-04-16T11:42:00.309082Z\nFROM\nframes\nWHERE\nd-1.772983458s2026-04-16T11:42:00.309197Z2026-04-16711:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes\nWHERE\n=3.464891083s2026-04-16T11:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes\nWHERE\nd=2.425023041s2026-04-16T12:02:32.933357Z2026-64-16112:02:39.40972172026-04-16T12:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16T12:07:55.949632Z2026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16T12:12:58.921555Z\nFROM\nframes\nWHERE\n=2.123106542s2026-04-16T12:12:58.922167Z2026-04-16T12:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16T12:13:01.327453ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 285-zsh86-zsh₴7* Unable to acce...O x8INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 164eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 62 frames,20.4MB → 2.3MB(9.1x),62 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 99 frames,17.2MB → 5.3MB (3.2x),99 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 1 frames,0.3MB → 0.4MB (0.8x), 1 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-8093524035767003282, trigger=visual_change)INFOscreenpipe_engine::event.driven_capture: content dedup: skippingcapture for monitor 2 Chash=-8093524035767003282,WARNsqlx::query:summary="SELECT id,snapshot_path, device_name, _"db.statement="\n\nSELECT\ntrigger=visual_change)id, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=102 elapseINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 102 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 42 frames,13.9MB → 3.1MB (4.5X), 42 JPEGSdeletedscreenpipe_engine::snapshot_compaction: snapshotcompaction: 57 frames,12. 6MB → 6.2MB (2.0x), 57 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 70eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB → 1.OMB (9.2x), 26 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:42 frames,10.5MB4.7MB (2.2x), 42 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:WARNsalx::query:skipping capture for monitor 1 (hash=-7465795543963075308, trigger=click)summary="SELECT id,snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=61 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 28 frames, 9.6MB → 1.4MB (6.7x), 28 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 31 frames, 8.9MB → 2.1MB (4.2x), 31 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 33eligible framesINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 15 frames, 5.2MB → 1.1MB (4.8x), 15 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 16 frames,4.6MB+ 1.2MB (3.8x), 16 JPEGs deletedWARNsalx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=112 elapseINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 49 frames,14.5MB → 2.7MB (5.4x), 49 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 13.6MB + 4.6MB(2.9x),61 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 3.4MB → 0.8MB (4.4x), 10 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 2.7MB 0.4MB (6.4x), 10 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=visual_change)WARN sqlx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected=0 rows_returned-64 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 64eligible framesWARNIsalx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned=1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames,INFO8.6MB → 1.3MB (6.8x), 25 JPEGs deletedscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860, trigger=click)...
|
NULL
|
|
34811
|
NULL
|
0
|
2026-04-16T09:13:02.598339+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776330782598_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kToolsWindowHelpProject vpip aruisahO composer.jsonO composer.lock0 dependency-checker.json0 dev.json=ids.txtE infection.json.distM+INS ALL.mdM- INIEKNALWEOROOKSEIUPjiminny_storageM+ lIcenses.moM MakefileO package-lock.json= phpstan.neon.distEphpstan-baseline.neon< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK_FILTERING_IMPLE› Ih External LibrariesE® Scratches and Consoles~ D Database ConsolesA console [EU]A DEAL RISKS [EU]&D|1=UT42UFU1v & minnvo ocanostc consoe minnvoocal4 Di Timinny@localhostA HS_local [jiminny@local4 SF [jiminny@localhost]A zoho_dev [jiminny@locaV A PRODservices+,o, c|v M Databaseci consoe s124 ms& minnvo ocalnost4SF 5 gA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDocker© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© AutomatedReportsService.phpC CreateActivityLoggedEvent.php© Team.php© CreateHeldActivityEvent.php© AutomatedReportsRepository.php© TrackProviderInstalledEvent.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controllerpublic function integrationAppConnect(): JsonResponse->setStatusCode( code: JsonResponse: :HTTP_FAILED_DEPENDENCY);RequestGenerateReportJob.phpA4 ×2 ^$socialAccount→>setAttribute('state', SocialAccount: :STATE_CONNECTED);SsocialAccount->saveO:214$this->logger->info('[IntegrationApp] Social account is connected.', ['team_id' => $team->getId(),'iapR_provider' => $realProviderKey,'provider'=> $crmProviderKey,'state' →> SocialAccount::STATE_CONNECTED,1);$this->eventDispatcher-›dispatch(new SocialAccountConnected($socialAccount));return response->json(I'success' = true,'message"=> sprintf(romidt os ts successrully connectedProviders::getIntegrationAppProviderLabel($realProviderKey)227228229->setStatusCode( code: JsonResponse: :HTTP_ACCEPTED) :Outputo1 rowsDid Yf jiminny.teamsTx: Auto vOuuid (UUID with time-low a...1 6473c918-d8db-4ded-a52b-4febfd7b7c022 abae74b8-bfa8-4383-9a7f-89f4bf2bdbb43 c3a725ef-fc5e-4c7b-9231-6379b28341014 72c0ccae-28a5-44bd-a0b4-958e73135463310020020-0020-4044-0410- 100047909946 c6030540-121e-4d6b-9261-8d82105817hf7 eaba09e1-4973-4077-b041-ad389248318c8 018e2d7c-ed01-4af2-be33-5c28f454a18514 27325244-25d7-4431-aac4-9ddb2bde6b4516 2708d27a-/f31-4d90-bd2b-b5bde1c0211e18 dedab245-604c-4Cd2-a83e-4b9e034b277219 51467630-d89d-480b-be20-933e64a042f77.2 7--h-Đ200-272720556727C owner_id Ystatus Y143 active148 active‹null> active<null> activesnuld acrve<null> active‹null> active<null> active<null> active<null> active<null> active241 active777 artive91 rows retrieved starting from 1 in 1 s 872 ms (execution: 47 ms, fetching: 1 s 825 ms)E custom.logA console [PROD]A HS_local [jiminny@localhost]163165176179181182183184185186187188M189= laravel.logSF ljiminny@localhost]A console [STAGING]Ix. AUtOvHaycround vSELECT * FROMresults order by id desc;select * from activity_searches where user_id = 143;select * from ask_anything_prompts;SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;select * tron permusstons. # 150select x troi roles.select * from permission_role.select * from teams where id = 1;select * from groups g JOIN playbooks p 1..n<->1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 28;select * from playbooks where team_id = 1;select * from playbooks where id = 179;select * from playbook_categories where id = 1391;select * from users where id = 143;select * from crm_profiles where user_id = 143;select * fromactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6fpMACSELECT ar.ig, ar.uuid, ar.mediantype, ar.status, a.txReFROM automated_report_results arJOIN automated_reports a ON a.ig = ar.repont.idWHERE a.txpe = 'ask_iiminnx'LIMIT 10;select * from teamsselect * from tead's:|Epartner_id YO name T1 Salesforce Team1 Hubspot1 Edge Communications1 Burlington Textiles Corp of AmericaUoen1 Vonage1 Nexmo1 SH1 NewAccountJllestV1 KioskAccount1 Pipedrive, Inc.1 CannonI slug TJiminnyhubspotedge-communicationsburlington-textiles-corp-of-americaUoemvonagenewaccounutestvkioskaccountolpearive-inc, 0half Support Daily • in 2h 47 mAAutomatedReportsCommandTest-100% 145Thu 16 Apr 12:13:02Al console [EU]CascadeIntegration App ConneOur DB ( social_accounts table)Ma lminny v09 A12 X2 X4 ^state = full-refresh — thinks it'swWhy the connect. vue Page Is ShownValidateCrmConnectionRequiredTrait.php:40-43D phpif ($user->isCrmRequired()Sã (ScrmAccount === null || $crmAccount->isDisconnected())return true - redireccs to/ connect pageuur Do savs • sconneced→user s sentto connect oaoe even tnouonIntegration App already has a working connection.What Needs to HappenThe fix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The frontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection either• Shows the modal unnecessarily, or• Pacalvac immediatelv cinca the connection eyictene rontrxs' on the connect oade, ve ore Showino the ouiton, check connection.connected = true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The SDK already gives you this info in the initial GET integrations/zohocrmresponse.Oul ..Ask anything (884L)+ <> CodeClaude Sonnet 4.6CSV vI photo_path T/6473c918-d8db-4ded-a52b-4febfd7b7c02/avatars/B64LBUHeIZ1JASm8UVNгcqYZevMYaJsJ1F5F9yw5.png/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/EXpb7Uu5xQZy0PwweIxaL9Rg3qsMQnBrp0MZFRNA.png<null>SNUL><null><null><null><null>ShULD<null><null>SNUL>ChilllsW Windsurf Teams189:21UTF-84 spaces...
|
NULL
|
-8768759391086968446
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorFV PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kToolsWindowHelpProject vpip aruisahO composer.jsonO composer.lock0 dependency-checker.json0 dev.json=ids.txtE infection.json.distM+INS ALL.mdM- INIEKNALWEOROOKSEIUPjiminny_storageM+ lIcenses.moM MakefileO package-lock.json= phpstan.neon.distEphpstan-baseline.neon< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK_FILTERING_IMPLE› Ih External LibrariesE® Scratches and Consoles~ D Database ConsolesA console [EU]A DEAL RISKS [EU]&D|1=UT42UFU1v & minnvo ocanostc consoe minnvoocal4 Di Timinny@localhostA HS_local [jiminny@local4 SF [jiminny@localhost]A zoho_dev [jiminny@locaV A PRODservices+,o, c|v M Databaseci consoe s124 ms& minnvo ocalnost4SF 5 gA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDocker© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© AutomatedReportsService.phpC CreateActivityLoggedEvent.php© Team.php© CreateHeldActivityEvent.php© AutomatedReportsRepository.php© TrackProviderInstalledEvent.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controllerpublic function integrationAppConnect(): JsonResponse->setStatusCode( code: JsonResponse: :HTTP_FAILED_DEPENDENCY);RequestGenerateReportJob.phpA4 ×2 ^$socialAccount→>setAttribute('state', SocialAccount: :STATE_CONNECTED);SsocialAccount->saveO:214$this->logger->info('[IntegrationApp] Social account is connected.', ['team_id' => $team->getId(),'iapR_provider' => $realProviderKey,'provider'=> $crmProviderKey,'state' →> SocialAccount::STATE_CONNECTED,1);$this->eventDispatcher-›dispatch(new SocialAccountConnected($socialAccount));return response->json(I'success' = true,'message"=> sprintf(romidt os ts successrully connectedProviders::getIntegrationAppProviderLabel($realProviderKey)227228229->setStatusCode( code: JsonResponse: :HTTP_ACCEPTED) :Outputo1 rowsDid Yf jiminny.teamsTx: Auto vOuuid (UUID with time-low a...1 6473c918-d8db-4ded-a52b-4febfd7b7c022 abae74b8-bfa8-4383-9a7f-89f4bf2bdbb43 c3a725ef-fc5e-4c7b-9231-6379b28341014 72c0ccae-28a5-44bd-a0b4-958e73135463310020020-0020-4044-0410- 100047909946 c6030540-121e-4d6b-9261-8d82105817hf7 eaba09e1-4973-4077-b041-ad389248318c8 018e2d7c-ed01-4af2-be33-5c28f454a18514 27325244-25d7-4431-aac4-9ddb2bde6b4516 2708d27a-/f31-4d90-bd2b-b5bde1c0211e18 dedab245-604c-4Cd2-a83e-4b9e034b277219 51467630-d89d-480b-be20-933e64a042f77.2 7--h-Đ200-272720556727C owner_id Ystatus Y143 active148 active‹null> active<null> activesnuld acrve<null> active‹null> active<null> active<null> active<null> active<null> active241 active777 artive91 rows retrieved starting from 1 in 1 s 872 ms (execution: 47 ms, fetching: 1 s 825 ms)E custom.logA console [PROD]A HS_local [jiminny@localhost]163165176179181182183184185186187188M189= laravel.logSF ljiminny@localhost]A console [STAGING]Ix. AUtOvHaycround vSELECT * FROMresults order by id desc;select * from activity_searches where user_id = 143;select * from ask_anything_prompts;SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;select * tron permusstons. # 150select x troi roles.select * from permission_role.select * from teams where id = 1;select * from groups g JOIN playbooks p 1..n<->1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 28;select * from playbooks where team_id = 1;select * from playbooks where id = 179;select * from playbook_categories where id = 1391;select * from users where id = 143;select * from crm_profiles where user_id = 143;select * fromactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6fpMACSELECT ar.ig, ar.uuid, ar.mediantype, ar.status, a.txReFROM automated_report_results arJOIN automated_reports a ON a.ig = ar.repont.idWHERE a.txpe = 'ask_iiminnx'LIMIT 10;select * from teamsselect * from tead's:|Epartner_id YO name T1 Salesforce Team1 Hubspot1 Edge Communications1 Burlington Textiles Corp of AmericaUoen1 Vonage1 Nexmo1 SH1 NewAccountJllestV1 KioskAccount1 Pipedrive, Inc.1 CannonI slug TJiminnyhubspotedge-communicationsburlington-textiles-corp-of-americaUoemvonagenewaccounutestvkioskaccountolpearive-inc, 0half Support Daily • in 2h 47 mAAutomatedReportsCommandTest-100% 145Thu 16 Apr 12:13:02Al console [EU]CascadeIntegration App ConneOur DB ( social_accounts table)Ma lminny v09 A12 X2 X4 ^state = full-refresh — thinks it'swWhy the connect. vue Page Is ShownValidateCrmConnectionRequiredTrait.php:40-43D phpif ($user->isCrmRequired()Sã (ScrmAccount === null || $crmAccount->isDisconnected())return true - redireccs to/ connect pageuur Do savs • sconneced→user s sentto connect oaoe even tnouonIntegration App already has a working connection.What Needs to HappenThe fix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The frontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection either• Shows the modal unnecessarily, or• Pacalvac immediatelv cinca the connection eyictene rontrxs' on the connect oade, ve ore Showino the ouiton, check connection.connected = true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The SDK already gives you this info in the initial GET integrations/zohocrmresponse.Oul ..Ask anything (884L)+ <> CodeClaude Sonnet 4.6CSV vI photo_path T/6473c918-d8db-4ded-a52b-4febfd7b7c02/avatars/B64LBUHeIZ1JASm8UVNгcqYZevMYaJsJ1F5F9yw5.png/abae74b8-bfa8-4383-9a7f-89f4bf2bdbb4/avatars/EXpb7Uu5xQZy0PwweIxaL9Rg3qsMQnBrp0MZFRNA.png<null>SNUL><null><null><null><null>ShULD<null><null>SNUL>ChilllsW Windsurf Teams189:21UTF-84 spaces...
|
34807
|
|
34855
|
NULL
|
0
|
2026-04-16T09:18:15.702360+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331095702_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject v© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phppip aruisahC AutomatedReportsCommand.phpO composer.jsonAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.phpO composer.lock© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php0 dependency-checker.json© AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php0 dev.jsonC CreateActivityLoggedEvent.phpActivityLoagea.onp=ids.txtE infection.json.distAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.phpM+INS ALL.md© AutomatedReportResult.php(C AutomatedReport.phpM- INIEKNALWEOROOKSEIUPjiminny_storageclass TeamSetupController extends ControllerA4 ×2 ^public function integrationAppConnect(): JsonResponseM+ lIcenses.moM Makefile->setStatusCode( code: JsonResponse: :HTTP_FAILED_DEPENDENCY);O package-lock.json= phpstan.neon.distEphpstan-baseline.neon$socialAccount→>setAttribute('state', SocialAccount: :STATE_CONNECTED);SsocialAccount->saveO:< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xml214us vetur.config.is$this->logger->info('[IntegrationApp] Social account is connected.', ['team_id' => $team->getId(),'iapR_provider' => $realProviderKey,'provider'=> $crmProviderKey,'state' →> SocialAccount::STATE_CONNECTED,M+ WEBHOOK_FILTERING_IMPLE1);> th External LibrariesE® Scratches and Consoles$this->eventDispatcher-›dispatch(new SocialAccountConnected($socialAccount));~ D Database ConsolesA console [EU]A DEAL RISKS [EU]&D|1=U42UFU1v & minnvo ocanostreturn response->json(I'success' => true.'message"=> sprintf(romidt os ts successrully connectedProviders::getIntegrationAppProviderLabel($realProviderKey)c consoe lminnvolocaln4 Di Timinny@localhostA HS_local [jiminny@local4 SF [jiminny@localhost]227228229->setStatusCode( code: JsonResponse: :HTTP_ACCEPTED) :A zoho_dev [jiminny@locaV A PRODservices+,o, c|v M Databaseci consoe s124 ms& minnvo ocalnost4 SF 488 msA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDocker, 0half Support Daily • in 2h 42 mA100% 145Thu 16 Apr 12:18:15AutomatedReportsCommandTest-= custom.log= laravel.logA SF liminny@localhost] xA HS_local [jiminny@localhost]Al console [EU]CascadeA console [PROD]A console [STAGING]Integration App ConneIx. AUtOvHaycround vMa lminny vOur DB ( social_accounts table)state = full-refresh — thinks it'sSELECT * FROMresults order by id desc;09 A12 X2 X4 ^select * from activity_searches where user_id = 143;wselect * from ask_anything_prompts;163165SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;Why the connect. vue Page Is ShownValidateCrmConnectionRequiredTrait.php:40-43D phpif ($user->isCrmRequired()Sã (ScrmAccount === null || $crmAccount->isDisconnected())select * tron permusstons. # 150select x troi roles.select * from permission_role.return true - redireccs to/ connect page176179select * from teams where id = 1;select * from groups g JOIN playbooks p 1..n<->1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 28;select * from playbooks where team_id = 1;select * from playbooks where id = 179;select * from playbook_categories where id = 1391;select * trom users where 10 = 145;select * from crm_profiles where user_id = 143;select * fromactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6fpMACuur Do savs • sconneced→user s sentto connect oaoe even tnouonIntegration App already has a working connection.What Needs to HappenThe fix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The frontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection either• Shows the modal unnecessarily, or• Pacalvac immediatelv cinca the connection eyicte182183184185186187188189 vSELECT ar.ig, ar.uuid, ar.mediantype, ar.status, a.txReFROM automated_report_results arJOIN automated_reports a ON a.ig = ar.repont.idWHERE a.txpe = 'ask_iiminnx'LIMINT 10select * from teams where id IN (3143, 1);select * from crm_configurations;ne rontrxs' on the connect oade, ve ore Showino the ouiton, check connection.connected = true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The SDK already gives you this info in the initial GET integrations/zohocrmresponse.d 4pC1l -Ask anything (884L)+ <> CodeClaude Sonnet 4.6OutputfB jiminny.crm_configurations52 rowsvDid YTx: Auto vuvid (UUID with time-low a...E team_id YLnotifiable_user_id Yo4 cucuceuo-t/o-40/-0400-T07910070e66 4074642e-a48e-48a4-8f2f-b541ef34ce1567 ab54226c-910f-4508-9eb2-e29173800dcf499 8b5a4f59-99a8-4678-8457-e2de25d334f7484 fc9c7f21-70f7-46b4-8c12-960a71f066d7F8O b4603a01-5d91-4209-93b0-af2d2918c6b7510 478a21f3-bc3f-419e-990c-7809606d651785999303231433414! provider TSnUcD nUos00<null> salesforce<null> salesforceSnULb nUDsooc‹nuuo salestorce<null> integration-app<null> hubspotWedition YSIULL<null><null>SNULL>ChULLzohocrmSnULLI instance T.is_sandbox YI version YShULL02<null>0 50.0<null>0 50.0SNULL>o <null>0 50.0<nul><null>0102eSVyinstalled_app_versionsync_metadata Ysync_objectsShULL<null><null>SNULL>ShULL<nuu><null>52 rows retrieved starting from 1 in 426 ms (execution: 12 ms, fetching: 414 ms)SUM: 3143 51:3W Windsurf Teams189:21UTF-84 spaces...
|
NULL
|
1087613398894624144
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject v© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phppip aruisahC AutomatedReportsCommand.phpO composer.jsonAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.phpO composer.lock© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php0 dependency-checker.json© AutomatedReportsService.php© CreateHeldActivityEvent.php© TrackProviderInstalledEvent.php0 dev.jsonC CreateActivityLoggedEvent.phpActivityLoagea.onp=ids.txtE infection.json.distAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.phpRequestGenerateReportJob.phpM+INS ALL.md© AutomatedReportResult.php(C AutomatedReport.phpM- INIEKNALWEOROOKSEIUPjiminny_storageclass TeamSetupController extends ControllerA4 ×2 ^public function integrationAppConnect(): JsonResponseM+ lIcenses.moM Makefile->setStatusCode( code: JsonResponse: :HTTP_FAILED_DEPENDENCY);O package-lock.json= phpstan.neon.distEphpstan-baseline.neon$socialAccount→>setAttribute('state', SocialAccount: :STATE_CONNECTED);SsocialAccount->saveO:< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xml214us vetur.config.is$this->logger->info('[IntegrationApp] Social account is connected.', ['team_id' => $team->getId(),'iapR_provider' => $realProviderKey,'provider'=> $crmProviderKey,'state' →> SocialAccount::STATE_CONNECTED,M+ WEBHOOK_FILTERING_IMPLE1);> th External LibrariesE® Scratches and Consoles$this->eventDispatcher-›dispatch(new SocialAccountConnected($socialAccount));~ D Database ConsolesA console [EU]A DEAL RISKS [EU]&D|1=U42UFU1v & minnvo ocanostreturn response->json(I'success' => true.'message"=> sprintf(romidt os ts successrully connectedProviders::getIntegrationAppProviderLabel($realProviderKey)c consoe lminnvolocaln4 Di Timinny@localhostA HS_local [jiminny@local4 SF [jiminny@localhost]227228229->setStatusCode( code: JsonResponse: :HTTP_ACCEPTED) :A zoho_dev [jiminny@locaV A PRODservices+,o, c|v M Databaseci consoe s124 ms& minnvo ocalnost4 SF 488 msA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDocker, 0half Support Daily • in 2h 42 mA100% 145Thu 16 Apr 12:18:15AutomatedReportsCommandTest-= custom.log= laravel.logA SF liminny@localhost] xA HS_local [jiminny@localhost]Al console [EU]CascadeA console [PROD]A console [STAGING]Integration App ConneIx. AUtOvHaycround vMa lminny vOur DB ( social_accounts table)state = full-refresh — thinks it'sSELECT * FROMresults order by id desc;09 A12 X2 X4 ^select * from activity_searches where user_id = 143;wselect * from ask_anything_prompts;163165SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;Why the connect. vue Page Is ShownValidateCrmConnectionRequiredTrait.php:40-43D phpif ($user->isCrmRequired()Sã (ScrmAccount === null || $crmAccount->isDisconnected())select * tron permusstons. # 150select x troi roles.select * from permission_role.return true - redireccs to/ connect page176179select * from teams where id = 1;select * from groups g JOIN playbooks p 1..n<->1: on g.playbook_id = p.id where g.team_id = 1;select * from groups where id = 28;select * from playbooks where team_id = 1;select * from playbooks where id = 179;select * from playbook_categories where id = 1391;select * trom users where 10 = 145;select * from crm_profiles where user_id = 143;select * fromactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6fpMACuur Do savs • sconneced→user s sentto connect oaoe even tnouonIntegration App already has a working connection.What Needs to HappenThe fix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The frontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection either• Shows the modal unnecessarily, or• Pacalvac immediatelv cinca the connection eyicte182183184185186187188189 vSELECT ar.ig, ar.uuid, ar.mediantype, ar.status, a.txReFROM automated_report_results arJOIN automated_reports a ON a.ig = ar.repont.idWHERE a.txpe = 'ask_iiminnx'LIMINT 10select * from teams where id IN (3143, 1);select * from crm_configurations;ne rontrxs' on the connect oade, ve ore Showino the ouiton, check connection.connected = true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The SDK already gives you this info in the initial GET integrations/zohocrmresponse.d 4pC1l -Ask anything (884L)+ <> CodeClaude Sonnet 4.6OutputfB jiminny.crm_configurations52 rowsvDid YTx: Auto vuvid (UUID with time-low a...E team_id YLnotifiable_user_id Yo4 cucuceuo-t/o-40/-0400-T07910070e66 4074642e-a48e-48a4-8f2f-b541ef34ce1567 ab54226c-910f-4508-9eb2-e29173800dcf499 8b5a4f59-99a8-4678-8457-e2de25d334f7484 fc9c7f21-70f7-46b4-8c12-960a71f066d7F8O b4603a01-5d91-4209-93b0-af2d2918c6b7510 478a21f3-bc3f-419e-990c-7809606d651785999303231433414! provider TSnUcD nUos00<null> salesforce<null> salesforceSnULb nUDsooc‹nuuo salestorce<null> integration-app<null> hubspotWedition YSIULL<null><null>SNULL>ChULLzohocrmSnULLI instance T.is_sandbox YI version YShULL02<null>0 50.0<null>0 50.0SNULL>o <null>0 50.0<nul><null>0102eSVyinstalled_app_versionsync_metadata Ysync_objectsShULL<null><null>SNULL>ShULL<nuu><null>52 rows retrieved starting from 1 in 426 ms (execution: 12 ms, fetching: 414 ms)SUM: 3143 51:3W Windsurf Teams189:21UTF-84 spaces...
|
NULL
|
|
34856
|
NULL
|
0
|
2026-04-16T09:18:15.942139+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331095942_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 42 m100% <478Thu 16 Apr 12:18:15-zshDOCKER- ₴8186-zsh₴7* Unable to acce...O 882026-04-16711:42:00.309197Z2026-04-16T11:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes \nWHERE\nDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zshINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 102eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 42 frames,13. 9MB → 3.1MB (4.5x),42 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 57 frames,12. 6MB → 6.2MB (2.0x), 57 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70 eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB+ 1.OMB (9.2x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 42 frames,10.5MBINFO+ 4.7MB (2.2x),42 JPEGs deletedscreenpipe_engine:: event_driven_capture: content dedup:skippingcapture for monitor 1 (hash=-7465795543963075308, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ."db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=61 elapsed=3.464891083s2026-04-16711:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 28 frames, 9.6MB→ 1.4MB(6.7x),28 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 31 frames,8.9MB+ 2.1MB (4.2x), 31 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 33 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 15 frames, 5.2MB → 1.1MB (4.8x), 15 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 16 frames,4. 6MB→ 1.2MB (3.8x),16 JPEGsdeletedWARNsalx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path,\ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=112 elapsed=2.425023041s2026-04-16T12:02:32.93335722026-04-16712:02:39.409221Z2026-04-16T12:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16T12:07:55.949632Z2026-04-16T12:07:56.805212Z2026-04-16112:12:58.14448422026-04-16T12:12:58.921555ZInFROM\nframes \nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 49 frames, 14.5MB → 2.7MB (5.4x), 49 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 13.6MB → 4.6MB (2.9x),61 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 3.4MB 0.8MB (4.4x), 10 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames,2.7MB → 0.4MB (6.4x),10 JPEGs deletedINFOWARNscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=visual_change)sqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned-64 elapsedtimestamp=2.123106542s2026-04-16712:12:58.922167ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 64 eligible frames2026-04-16T12:12:58.957831ZWARNsqlx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement="'' rows_affected-0rows_returned-1 elapsed=1.761321875s2026-04-16T12:13:00.673457ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 8.6MB 1.3MB (6.8x),25 JPEGs deleted2026-04-16112:13:01.2775532INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:01.327453ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:05.161772ZINFO2026-04-16T12:17:33.113054Zscreenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 7.8MB → 3.3MB (2.4x), 37 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8888940631032850566, trigger=click)2026-04-16T12:17:33.114482ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8888940631032850566,2026-04-16T12:18:08.118639ZWARNsqlx: :query:summary="SELECT id, snapshot_path, device_name, -"trigger=click)db.statement="\n\nSELECT\nframes\nWHERE\nid,\nsnapshot_path,\ndevice_name, \ntimestamp\nFROM\nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=35 elapsed=2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16112:18:11.425262ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 35 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 4.8MB 1.1MB (4.6x), 14 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.8MB → 1.9MB (2.5x), 19 JPEGs deleted:e (4.5), 15 3E detesed...
|
NULL
|
4192514036764973191
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 42 m100% <478Thu 16 Apr 12:18:15-zshDOCKER- ₴8186-zsh₴7* Unable to acce...O 882026-04-16711:42:00.309197Z2026-04-16T11:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes \nWHERE\nDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zshINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 102eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 42 frames,13. 9MB → 3.1MB (4.5x),42 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 57 frames,12. 6MB → 6.2MB (2.0x), 57 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70 eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB+ 1.OMB (9.2x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 42 frames,10.5MBINFO+ 4.7MB (2.2x),42 JPEGs deletedscreenpipe_engine:: event_driven_capture: content dedup:skippingcapture for monitor 1 (hash=-7465795543963075308, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ."db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=61 elapsed=3.464891083s2026-04-16711:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 28 frames, 9.6MB→ 1.4MB(6.7x),28 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 31 frames,8.9MB+ 2.1MB (4.2x), 31 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 33 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 15 frames, 5.2MB → 1.1MB (4.8x), 15 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 16 frames,4. 6MB→ 1.2MB (3.8x),16 JPEGsdeletedWARNsalx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path,\ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=112 elapsed=2.425023041s2026-04-16T12:02:32.93335722026-04-16712:02:39.409221Z2026-04-16T12:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16T12:07:55.949632Z2026-04-16T12:07:56.805212Z2026-04-16112:12:58.14448422026-04-16T12:12:58.921555ZInFROM\nframes \nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 49 frames, 14.5MB → 2.7MB (5.4x), 49 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 13.6MB → 4.6MB (2.9x),61 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 3.4MB 0.8MB (4.4x), 10 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames,2.7MB → 0.4MB (6.4x),10 JPEGs deletedINFOWARNscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=visual_change)sqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned-64 elapsedtimestamp=2.123106542s2026-04-16712:12:58.922167ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 64 eligible frames2026-04-16T12:12:58.957831ZWARNsqlx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement="'' rows_affected-0rows_returned-1 elapsed=1.761321875s2026-04-16T12:13:00.673457ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 8.6MB 1.3MB (6.8x),25 JPEGs deleted2026-04-16112:13:01.2775532INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:01.327453ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:05.161772ZINFO2026-04-16T12:17:33.113054Zscreenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 7.8MB → 3.3MB (2.4x), 37 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8888940631032850566, trigger=click)2026-04-16T12:17:33.114482ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8888940631032850566,2026-04-16T12:18:08.118639ZWARNsqlx: :query:summary="SELECT id, snapshot_path, device_name, -"trigger=click)db.statement="\n\nSELECT\nframes\nWHERE\nid,\nsnapshot_path,\ndevice_name, \ntimestamp\nFROM\nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=35 elapsed=2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16112:18:11.425262ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 35 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 4.8MB 1.1MB (4.6x), 14 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.8MB → 1.9MB (2.5x), 19 JPEGs deleted:e (4.5), 15 3E detesed...
|
34853
|
|
34889
|
NULL
|
0
|
2026-04-16T09:22:57.287721+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331377287_m1.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6229830146645597650
|
-8059191214744026816
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2 h 38 m100% <478Thu 16 Apr 12:22:56-zshDOCKER• ₴186-zsh₴7* Unable to acce...O x82026-04-16711:42:00.309197Z2026-04-16T11:42:03.033086Z2026-04-16T11:42:07.608266Z2026-04-16T11:47:07.854850Z2026-04-16T11:47:09.544446Z2026-04-16T11:47:12.785911Z2026-04-16T11:50:53.949646Z2026-04-16T11:52:16.266043Z\nFROM\nframes \nWHERE\nDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 285-zshINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 102eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 42 frames,13. 9MB → 3.1MB (4.5x),42 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 57 frames,12. 6MB → 6.2MB (2.0x), 57 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70 eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 8.8MB+ 1.OMB (9.2x),26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction: 42 frames,10.5MBINFOscreenpipe_engine::event_driven_capture:content dedup:skipping+ 4.7MB (2.2x),42 JPEGs deletedcapture for monitor 1 (hash=-7465795543963075308, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ."db.statement="\n\nSELECT\nid, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned-61 elapsed=3.464891083s2026-04-16711:52:16.266769Z2026-04-16T11:52:19.048528Z2026-04-16T11:52:24.793563Z2026-04-16T11:57:24.972375Z2026-04-16T11:57:27.250981Z2026-04-16T11:57:30.491852Z2026-04-16T12:02:32.932960Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 61eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 28 frames, 9.6MB+ 1.4MB(6.7x),28 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 31 frames,8.9MB+ 2.1MB (4.2x), 31 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 33 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:15 frames, 5.2MB1.1MB(4.8x), 15 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:16 frames,4. 6MB→ 1.2MB (3.8x),16 JPEGsdeletedWARNsalx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=112 elapsed=2.425023041s2026-04-16T12:02:32.93335722026-04-16712:02:39.409221Z2026-04-16T12:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16T12:07:55.949632Z2026-04-16T12:07:56.805212Z2026-04-16112:12:58.14448422026-04-16T12:12:58.921555ZInFROM\nframes \nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 112 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 49 frames, 14.5MB → 2.7MB (5.4x), 49 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 61 frames, 13.6MB → 4.6MB (2.9x),61 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)INFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 22 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames, 3.4MB 0.8MB (4.4x), 10 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 10 frames,2.7MB → 0.4MB (6.4x),10 JPEGs deletedINFOWARNscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=visual_change)sqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned-64 elapsedtimestamp=2.123106542s2026-04-16712:12:58.922167ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 64 eligible frames2026-04-16T12:12:58.957831ZWARNsqlx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement="'' rows_affected-0rows_returned-1 elapsed=1.761321875s2026-04-16T12:13:00.673457ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 8.6MB 1.3MB (6.8x),25 JPEGs deleted2026-04-16112:13:01.2775532INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:01.327453ZINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860, trigger=click)2026-04-16T12:13:05.161772ZINFO2026-04-16T12:17:33.113054Zscreenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 7.8MB → 3.3MB (2.4x), 37 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8888940631032850566, trigger=click)2026-04-16T12:17:33.114482ZINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8888940631032850566,2026-04-16T12:18:08.118639ZWARNsqlx: :query:summary="SELECT id, snapshot_path, device_name, "trigger=click)db.statement="\n\nSELECT\nframes\nWHERE\nid,\nsnapshot_path,\ndevice_name, \ntimestamp\nFROM\nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=35 elapsed=2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16112:18:11.425262ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 35 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 4.8MB 1.1MB (4.6x), 14 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.8MB → 1.9MB (2.5x), 19 JPEGs deleted:e (4.5), 15 3E detesed...
|
34877
|
|
34890
|
NULL
|
0
|
2026-04-16T09:22:57.287719+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331377287_m2.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-6229830146645597650
|
-8059191214744026816
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
PhpStormFileEditViewNavigateCodeLaravelRefactorFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kToolsWindowHelpProject vpip aruisahO composer.jsonO composer.lock0 dependency-checker.json0 dev.json=ids.txtE infection.json.distM+INS ALL.mdM- INIEKNALWEDROOKSEIUPjiminny_storageM+ lIcenses.moM MakefileO package-lock.json= phpstan.neon.distEphpstan-baseline.neon< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK_FILTERING_IMPLE> th External LibrariesE® Scratches and Consoles~ D Database ConsolesA console [EU]A DEAL RISKS [EU]&D|1=U42UFU1v & minnvo ocanostc consoe lminnvolocaln4 Di Timinny@localhostA HS_local [jiminny@local4 SF [jiminny@localhost]A zoho_dev [jiminny@locaV A PRODservices+,o, c|v M Databaseci consoe s124 ms& minnvo ocalnost4 SF 591 msA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDocker© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© AutomatedReportsService.phpC CreateActivityLoggedEvent.php© Team.php© CreateHeldActivityEvent.php© AutomatedReportsRepository.php© TrackProviderInstalledEvent.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controllerpublic function integrationAppConnect(): JsonResponse->setStatusCode( code: JsonResponse: :HTTP_FAILED_DEPENDENCY);RequestGenerateReportJob.phpA4 ×2 ^$socialAccount→>setAttribute('state', SocialAccount: :STATE_CONNECTED);SsocialAccount->saveO:214$this->logger->info('[IntegrationApp] Social account is connected.', ['team_id' => $team->getId(),'iapR_provider' => $realProviderKey,'provider'=> $crmProviderKey,'state' →> SocialAccount::STATE_CONNECTED,1);$this->eventDispatcher-›dispatch(new SocialAccountConnected($socialAccount));return response()->json(I'success' => true.'message' => sprintf(romidt os ts successrully connectedProviders::getIntegrationAppProviderLabel($realProviderKey)227228229->setStatusCode( code: JsonResponse: :HTTP_ACCEPTED) :Outputf jiminny.teams1rowTx: Auto vQHE4®D iduuid (UUID with time-low and time-high swapped)[ owner_idstatus3143<null>active1ece66c8-feb1-4df1-b321-21607daf4623o-e parcher-1o! nameslugI photo_pathIn transparent photo pathI conference_photo_path• stripe_id& crm_ido detaulr olavoook10lest Nikolay Accounttest-nikolay-accountSnULl>shuLl<null><null>500shuLlre security issues in your PHP files // Try SonarQube Cloud forfree // Download SonarQube Server // Learn more // Don't ask again (50 minutes ago)E custom.logA console [PROD]A HS_local [jiminny@localhost]163165176179180181182183184185186187188 v#189190= laravel.logSF ljiminny@localhost]A console [STAGING]Ix. AUtOvHaycround vSELECT * FROMresults order by id desc;select * from activity_searches where user_id = 143;select * from ask_anything_prompts;SELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;select * tron permusstons. # 150select x troi roles.select * from permission_role.select * from teams where id = 1;select * from groups g JOIN playbooks p 1..n<-›1: on g.playbook_id = p.id where g.team_id = 1;select * fromgroups where id = 28;select * from playbooks where team_id = 1;select * from playbooks where id = 179;select * from playbook_categories where id = 1391;select * trom users where 10 = 145;select * from crm_profiles where user_id = 143;select * fromactivities where crm confiquration id = 39 and tvoe = 'conference'ana cri_provider_la lo nut nuLl ukek by 1a desc,select * from activities where id = 422003; # 00U0400000pB6fpMACSELECT ar.ig, ar.uuid, ar.mediantype, ar.status, a.txReFROM automated_report_results arJOIN automated_reports a ON a.ig = ar.repont.idWHERE a.type = 'ask_liminnx'LIMIT 10;select * fromteams where id IN (3143);select * from crm_configurations where id = 3143;select * from teams where id = 500140liblj Support Daily • in 2h 38 mAAutomatedReportsCommandTest-100% C4Thu 16 Apr 12:22:56Al console [EU]CascadeIntegration App ConneOur DB ( social_accounts table)+D ..Ma lminny v09 A12 X2 X4 ^state = full-refresh — thinks it'swWl app/Hup/validateCrmconnectionkequiredIraic.pngValidateCrmConnectionRequiredTraithohp:40-43D phpif ($user->isCrmRequired()Sã (ScrmAccount === null || $crmAccount->isDisconnected())return true - redireccs to/ connect pageuur Do savs • sconneced→user s sentto connect oaoe even tnouonIntegration App already has a working connection.What Needs to HappenThe fix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The frontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection either• Shows the modal unnecessarily, or• Pacalvac immediatelv cinca the connection eyictene rontrxs' on the connect oade, ve ore Showino the ouiton, check connection.connected = true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The SDK already gives you this info in the initial GET integrations/zohocrmresponse.C1l -Ask anything (884L)+ <> CodeClaude Sonnet 4.6CSVW Windsurf Teams188:38UTF-84 spaces...
|
34876
|
|
34949
|
NULL
|
0
|
2026-04-16T09:28:27.675315+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331707675_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 32m100% <478Thu 16 Apr 12:28:27-zshDOCKERO 881DEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zsh2026-04-16711:52:19.048528ZINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:28 frames,9.6MB1.4MB(6.7x),2026-04-16T11:52:24.793563ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 31 frames,8.9MB2.1MB(4.2x),86-zsh28JPEGSdeleted31 JPEGs deleted₴7* Unable to acce...O x82026-04-16T11:57:24.972375ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 33eligibleframes2026-04-16T11:57:27.250981ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 15 frames,5.2MB1.1MB (4.8x),15 JPEGs deleted2026-04-16T11:57:30.491852ZINFOscreenpipe_2026-04-16T12:02:32.932960Zengine::snapshot_compaction:snapshotcompaction: 16 frames,4.6MB→ 1.2MB (3.8x), 16 JPEGs deletedWARNsqlx:: query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\nid,\nsnapshot_path, \ndevice_name, \ntimestamp\nFROM\nframes\nWHERE\nsnapshot_path IS NOTNULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n*rows_affected=0 rows_returned-112 elapsed=2.425023041s2026-04-16T12:02:32.933357Z2026-04-16T12:02:39.409221Z2026-04-16712:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16112:07:55.94963222026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16T12:12:58.921555Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 112 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 49 frames,14.5MB → 2.7MB (5.4x), 49 JPEGs deletedINFOscreenpipe.engine::snapshot_compaction: snapshotcompaction:61 frames,INFO13. 6MB → 4.6MB (2.9x),61 JPEGs deletedscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found22eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10 frames,3.4MB→ 0.8MB (4.4x), 10 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10 frames,2.7MB→ 0.4MB (6.4x),10 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skippingcapturefor monitor 2 (hash=5333893760344929860,trigger=visual_change)WARNsalx::querysummary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOTNULL \nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected-0 rows_returned=64 elapsed=2.12310654252026-04-16T12:12:58.922167Z2026-04-16712:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16T12:13:01.327453Z2026-04-16T12:13:05.161772Z2026-04-16T12:17:33.113054Z2026-04-16T12:17:33.114482Z2026-04-16T12:18:08.118639ZInFROM\nframes \nWHERE\nINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 64eligible framesWARNsqlx::query: summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned=1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 8.6MB → 1.3MB (6.8x), 25 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 7.8MB 3.3MB (2.4x), 37 JPEGs deletedINFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8888940631032850566,trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8888940631032850566, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \n device_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=35 elapsedtimestamp=2.793811083s2026-04-16112:18:08.11886322026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16112:23:11.51053822026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 35 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.8MB 1.9MB (2.5x), 19 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 44 frames, 9.6MB → 4.7MB (2.0x), 44 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)WARNsalx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\nid, \nsnapshot_path,\ndevice_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'timestamprows_affected=0 rows_returned=47 elapsed=1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 47 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 7.8MB → 1.6MB (4.9x), 22 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 6.3MB 1.1MB (5.5X), 23 JPEGs deleted...
|
NULL
|
-4543455936229065465
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 32m100% <478Thu 16 Apr 12:28:27-zshDOCKERO 881DEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zsh2026-04-16711:52:19.048528ZINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:28 frames,9.6MB1.4MB(6.7x),2026-04-16T11:52:24.793563ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 31 frames,8.9MB2.1MB(4.2x),86-zsh28JPEGSdeleted31 JPEGs deleted₴7* Unable to acce...O x82026-04-16T11:57:24.972375ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 33eligibleframes2026-04-16T11:57:27.250981ZINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 15 frames,5.2MB1.1MB (4.8x),15 JPEGs deleted2026-04-16T11:57:30.491852ZINFOscreenpipe_2026-04-16T12:02:32.932960Zengine::snapshot_compaction:snapshotcompaction: 16 frames,4.6MB→ 1.2MB (3.8x), 16 JPEGs deletedWARNsqlx:: query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\nid,\nsnapshot_path, \ndevice_name, \ntimestamp\nFROM\nframes\nWHERE\nsnapshot_path IS NOTNULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n*rows_affected=0 rows_returned-112 elapsed=2.425023041s2026-04-16T12:02:32.933357Z2026-04-16T12:02:39.409221Z2026-04-16712:02:54.944437Z2026-04-16T12:05:57.651378Z2026-04-16T12:07:55.052631Z2026-04-16112:07:55.94963222026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16T12:12:58.921555Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 112 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 49 frames,14.5MB → 2.7MB (5.4x), 49 JPEGs deletedINFOscreenpipe.engine::snapshot_compaction: snapshotcompaction:61 frames,INFO13. 6MB → 4.6MB (2.9x),61 JPEGs deletedscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=-7465795543963075308, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found22eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10 frames,3.4MB→ 0.8MB (4.4x), 10 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10 frames,2.7MB→ 0.4MB (6.4x),10 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skippingcapturefor monitor 2 (hash=5333893760344929860,trigger=visual_change)WARNsalx::querysummary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOTNULL \nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected-0 rows_returned=64 elapsed=2.12310654252026-04-16T12:12:58.922167Z2026-04-16712:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16T12:13:01.327453Z2026-04-16T12:13:05.161772Z2026-04-16T12:17:33.113054Z2026-04-16T12:17:33.114482Z2026-04-16T12:18:08.118639ZInFROM\nframes \nWHERE\nINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 64eligible framesWARNsqlx::query: summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned=1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 25 frames, 8.6MB → 1.3MB (6.8x), 25 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 37 frames, 7.8MB 3.3MB (2.4x), 37 JPEGs deletedINFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8888940631032850566,trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-8888940631032850566, trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\n id,\nsnapshot_path, \n device_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=35 elapsedtimestamp=2.793811083s2026-04-16112:18:08.11886322026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16112:23:11.51053822026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\nINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 35 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 19 frames, 4.8MB 1.9MB (2.5x), 19 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 44 frames, 9.6MB → 4.7MB (2.0x), 44 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFO screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)WARNsalx::query:summary="SELECT id, snapshot_path, device_name, "db.statement="\n\nSELECT\nid, \nsnapshot_path,\ndevice_name, \nsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'timestamprows_affected=0 rows_returned=47 elapsed=1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403ZINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 47 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 7.8MB → 1.6MB (4.9x), 22 JPEGs deletedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 6.3MB 1.1MB (5.5X), 23 JPEGs deleted...
|
34948
|
|
34950
|
NULL
|
0
|
2026-04-16T09:28:27.675752+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776331707675_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject vpip aruisahJ composer.jsonu composer.locku dependency-checker.json" dev.json= ids.txtEinfection.json.distM+INS ALL.mdM- INIEKNALWEOROOKSEIUPliminny storageM+ lIcenses.moM MakefileU package-lock.ison= phpstan.neon.dist= phpstan-baseline.neon<» phpunit.xmlleraw_sql_query.salM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK FILTERING IMPLE› ib External Libraries=Scratches and Consolesv _ Database Consoles¿ console IFUlC DEAL RISKS EUI&D|1=UT42UFU1v & minnvo ocanostc consoe lminnvolocaln4 Di Timinny@localhost4 HS local fiminny@local4 SF Timinny@localhostlc zoho_dev liminny@locaV & PRODservices+,oc• M Databaseci consoe s124 ms& minnvo ocalnost4 SF 763 mg4 HS localV & PROD« console 10 sv L STAGINGa console 2 s 670 ms…DockerC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php Xphp api.php(©) SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.phpC AutomatedReportsService.phpC) Create-e ldAcuiviyeventongC) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpC AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controller44X2 Apublic function integrationAppConnectO: JsonResponse->setstatuscode code: Jsonkesponse::HTTP_FATLED_DEPENDENCY):$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED):SsocialAccount->saveO:$this->logger->info('[IntegrationAppl Social account is connected.'.'team_ id' => Steam-›getido.'iapp_ provider' => SrealProviderKey.214'provider'= $crmProviderKey,'state' => Soc1alAccount::STATE_CONNECTED,1);sch1s->eventu1spaucner->a1spaucntnew soclaLAccouncconnected(soclaLaccount)):return response->isondi'success' => true.'message'=> sprintforomidt os ts successrully connectedProviders::getInteqrationAppProviderLabel$realProviderKey)227228229->setStatuscodel code: Jsonkesponse::HTTP_ACCEPTED)N(aJ Outputiib jiminny.usersAoid Y1-500 v 015014G00Tx: AutoMuuid (UUID with time-low and time-highhswapped) Y! name Y185 50225207-e004-4502-0051-8072148605e0van FlLnov1c93 36a8ee06-dd6c-488f-a137-eada08fobocaIva Nikolova27 80c06457-3dcd-4017-a95a-2f2ba49bb28eva NalKo LOva0o4.nca0-xtc-4701-4794-87120/505701Va Nlkolova "1058409-Fa01-1198-4404-21h5-9h6666200121Pneci ava vanoval429 42b2aafa-a76a-4281-b8ce-947c45e7cbe7anceurdcson necoune241 e6538737-e7b4-455f-a37a-3e79b665a220Integration Account PIpe...333 1456261a-9967-4c5b-9bd4-4877d7e7cc9fIncegration Account257 75CCe95/-335b-4ed1-b71f-7360a96455a2Integration Account2081189 4e5c52ed-cf63-452b-b202-e4295ae36134Ilian Kyuchukov1020 e94315c8-9b54-4211-a6b1-e34bd7b6ac86avor borey21632 4fd7638c-bdc0-4ea8-b252-7edede42beb7nuosdorestnore security issues in your PHP Tiles // Try SonarQube Cloud for free // Download SonarQube Server // Learn more // Don't ask again (55 minutes ago)= custom.log= laravel.logL SF (iminny@localhost xc HS_local fiminny@localhost)¿ console (EU]L console [PROD]1631634 console [STAGINGIIx. AUtOvHaycround vSELECT * FROMted_report_results order by id descselect * from activity searches where user id = 143:select * from ask_anything_prompts:SELECT * FROM groups WHERE 10 = 1459*SELECI * FRUM Users WHERE group_10 = 14571select * tron permusstons. # 150select x troi roles.select * from permission_role.select * from teams where id = 1:select * from groups g JOIN playbooks p 1..n<->1: on q.playbook id = p.id where q.team id = 1:select * from groups where 1d = 28;select * from playbooks where team_1d = 1*select * from playbooks where 1d = 179:select * from playbook_categories where 1d = 1591;select * trom users where 10 = 145;select * tron crm_proriles where user_1d = 1451select * troiactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000pB6fpMACSELECT ar.ig, ar.uuid, ar media txpe, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.1d = ar.report 1dWHERE a.type ='ask_J1minnyLLIMIN 1LOselect * tron reans where 10 = 5145.select & tromorn connourarons wiere 10= 300%select * from users:186181182183184183186188$189191 V1Y4email [EMAIL]@pipedrive.liminny.comava.nkocovaoLnu.nnv.onlacrosort.collIva.nikoLova@[EMAIL][EMAIL]-account@[EMAIL]@[EMAIL] email v<nul><null>ShULL<hUILL<null><null>ShULL<nUILL<null><null><null><nUILLau status v, 0hal• Support Daily • in 2h 32mA]100% 145Thu 16 Apr 12:28:27AutomatedReportsCommandTest-CascadeIntegration App ConneMa lminny vOur D8( social accounts tabe)state = full-refresh - thinks it's09 412 X2 X4 ^Why the connect. vue Page ls ShownValidateCrmConnectionRequiredTrait.php:40-43• phpif (Suser->isCrmRequired()&& (ScrmAccount === null || $crmAccount→>isDisconnected() )return true - redireccs to/ connect pageuur Do savs • sconneced→user s sento connect vaoe even thouanIntegration App already has a working connection.What Needs to HappenThe tix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The trontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection elther• shows the modal unnecessarlly, or• Pacalvac immeriately cince the connection eyictene rontrxs' on the connect oace, velore Showino the uiton checkconnection.connected === true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The Sdk already aives vou this into in the initial GET integrations zohocrmresponse.C1l -Ask anything (&+L)+ <> CodeClaude Connet 4669 AeSVypassword Yremember token v1 <null><nul>2 <null>GLTO6IZcVUmWS12C4K70cRJVnwhM6dv7bqiMV5zvLedLSLXrUkAahwFM8RXf2 <null>O0L4oD2UOUoY XOrELInUKu coraUSAnorOUoxaDKoaAYLSOrTUTVILyNg 002 <null>qSTAU6BGhhAfw7tDHxk3VEYCBK4gMaZYTFffhKEe0vXdzq3sghRISUGB73182 <null><nili >2 <null>SnULL1 <null>SnULl164/64/5:1 <null>1 <null><null>/311 <null><null>1642 <null>/641 <null>27n57e/0кeL4yorgкonsycbUnshк4c6014Dybq52LJocVDgtWyCAbbbrqlysSUM: 0207:4W Windsurt Teams191:21U1F-84 spacesW...
|
NULL
|
-669566829308830874
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileFditViewNavigateCodeLaravelRetactonToo PhpStormFileFditViewNavigateCodeLaravelRetactonToolsWindowHelpFV faVsco.s v#11894 on JY-18909-automated-reports-ask-iminny kProject vpip aruisahJ composer.jsonu composer.locku dependency-checker.json" dev.json= ids.txtEinfection.json.distM+INS ALL.mdM- INIEKNALWEOROOKSEIUPliminny storageM+ lIcenses.moM MakefileU package-lock.ison= phpstan.neon.dist= phpstan-baseline.neon<» phpunit.xmlleraw_sql_query.salM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xmlus vetur.config.isM+ WEBHOOK FILTERING IMPLE› ib External Libraries=Scratches and Consolesv _ Database Consoles¿ console IFUlC DEAL RISKS EUI&D|1=UT42UFU1v & minnvo ocanostc consoe lminnvolocaln4 Di Timinny@localhost4 HS local fiminny@local4 SF Timinny@localhostlc zoho_dev liminny@locaV & PRODservices+,oc• M Databaseci consoe s124 ms& minnvo ocalnost4 SF 763 mg4 HS localV & PROD« console 10 sv L STAGINGa console 2 s 670 ms…DockerC ReportController.phpG TokenBuilder.phpC) TeamSetupController.php Xphp api.php(©) SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.onoC AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.phpC AutomatedReportsService.phpC) Create-e ldAcuiviyeventongC) TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.phpActivityLoagea.onpAutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.phpC AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controller44X2 Apublic function integrationAppConnectO: JsonResponse->setstatuscode code: Jsonkesponse::HTTP_FATLED_DEPENDENCY):$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED):SsocialAccount->saveO:$this->logger->info('[IntegrationAppl Social account is connected.'.'team_ id' => Steam-›getido.'iapp_ provider' => SrealProviderKey.214'provider'= $crmProviderKey,'state' => Soc1alAccount::STATE_CONNECTED,1);sch1s->eventu1spaucner->a1spaucntnew soclaLAccouncconnected(soclaLaccount)):return response->isondi'success' => true.'message'=> sprintforomidt os ts successrully connectedProviders::getInteqrationAppProviderLabel$realProviderKey)227228229->setStatuscodel code: Jsonkesponse::HTTP_ACCEPTED)N(aJ Outputiib jiminny.usersAoid Y1-500 v 015014G00Tx: AutoMuuid (UUID with time-low and time-highhswapped) Y! name Y185 50225207-e004-4502-0051-8072148605e0van FlLnov1c93 36a8ee06-dd6c-488f-a137-eada08fobocaIva Nikolova27 80c06457-3dcd-4017-a95a-2f2ba49bb28eva NalKo LOva0o4.nca0-xtc-4701-4794-87120/505701Va Nlkolova "1058409-Fa01-1198-4404-21h5-9h6666200121Pneci ava vanoval429 42b2aafa-a76a-4281-b8ce-947c45e7cbe7anceurdcson necoune241 e6538737-e7b4-455f-a37a-3e79b665a220Integration Account PIpe...333 1456261a-9967-4c5b-9bd4-4877d7e7cc9fIncegration Account257 75CCe95/-335b-4ed1-b71f-7360a96455a2Integration Account2081189 4e5c52ed-cf63-452b-b202-e4295ae36134Ilian Kyuchukov1020 e94315c8-9b54-4211-a6b1-e34bd7b6ac86avor borey21632 4fd7638c-bdc0-4ea8-b252-7edede42beb7nuosdorestnore security issues in your PHP Tiles // Try SonarQube Cloud for free // Download SonarQube Server // Learn more // Don't ask again (55 minutes ago)= custom.log= laravel.logL SF (iminny@localhost xc HS_local fiminny@localhost)¿ console (EU]L console [PROD]1631634 console [STAGINGIIx. AUtOvHaycround vSELECT * FROMted_report_results order by id descselect * from activity searches where user id = 143:select * from ask_anything_prompts:SELECT * FROM groups WHERE 10 = 1459*SELECI * FRUM Users WHERE group_10 = 14571select * tron permusstons. # 150select x troi roles.select * from permission_role.select * from teams where id = 1:select * from groups g JOIN playbooks p 1..n<->1: on q.playbook id = p.id where q.team id = 1:select * from groups where 1d = 28;select * from playbooks where team_1d = 1*select * from playbooks where 1d = 179:select * from playbook_categories where 1d = 1591;select * trom users where 10 = 145;select * tron crm_proriles where user_1d = 1451select * troiactivities where crm confiquration id = 39 and tvoe = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003: # 00U0400000pB6fpMACSELECT ar.ig, ar.uuid, ar media txpe, ar.status, a.typeFROM automated_report_results arJOIN automated_reports a ON a.1d = ar.report 1dWHERE a.type ='ask_J1minnyLLIMIN 1LOselect * tron reans where 10 = 5145.select & tromorn connourarons wiere 10= 300%select * from users:186181182183184183186188$189191 V1Y4email [EMAIL]@pipedrive.liminny.comava.nkocovaoLnu.nnv.onlacrosort.collIva.nikoLova@[EMAIL][EMAIL]-account@[EMAIL]@[EMAIL] email v<nul><null>ShULL<hUILL<null><null>ShULL<nUILL<null><null><null><nUILLau status v, 0hal• Support Daily • in 2h 32mA]100% 145Thu 16 Apr 12:28:27AutomatedReportsCommandTest-CascadeIntegration App ConneMa lminny vOur D8( social accounts tabe)state = full-refresh - thinks it's09 412 X2 X4 ^Why the connect. vue Page ls ShownValidateCrmConnectionRequiredTrait.php:40-43• phpif (Suser->isCrmRequired()&& (ScrmAccount === null || $crmAccount→>isDisconnected() )return true - redireccs to/ connect pageuur Do savs • sconneced→user s sento connect vaoe even thouanIntegration App already has a working connection.What Needs to HappenThe tix is that integrationAppConnect should be called without requiringthe user to click the button again, since the connection is already active onnecrauon Aoo's sioe.The trontend currently only calls POST /api/v1/integration-app-connectafter openNewConnection() resolves with disconnected: false. But since theconnection alreadv exists, openNewconnection elther• shows the modal unnecessarlly, or• Pacalvac immeriately cince the connection eyictene rontrxs' on the connect oace, velore Showino the uiton checkconnection.connected === true in the existing SDK response and auto-call POST /api/v1/integration-app-connect directly - skipping the modal entirely.The Sdk already aives vou this into in the initial GET integrations zohocrmresponse.C1l -Ask anything (&+L)+ <> CodeClaude Connet 4669 AeSVypassword Yremember token v1 <null><nul>2 <null>GLTO6IZcVUmWS12C4K70cRJVnwhM6dv7bqiMV5zvLedLSLXrUkAahwFM8RXf2 <null>O0L4oD2UOUoY XOrELInUKu coraUSAnorOUoxaDKoaAYLSOrTUTVILyNg 002 <null>qSTAU6BGhhAfw7tDHxk3VEYCBK4gMaZYTFffhKEe0vXdzq3sghRISUGB73182 <null><nili >2 <null>SnULL1 <null>SnULl164/64/5:1 <null>1 <null><null>/311 <null><null>1642 <null>/641 <null>27n57e/0кeL4yorgкonsycbUnshк4c6014Dybq52LJocVDgtWyCAbbbrqlysSUM: 0207:4W Windsurt Teams191:21U1F-84 spacesW...
|
NULL
|
|
35023
|
NULL
|
0
|
2026-04-16T09:33:27.895402+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332007895_m1.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/settings
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,560) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Google","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
-5997090705867114151
|
8517247806455365881
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line...
|
35020
|
|
35024
|
NULL
|
0
|
2026-04-16T09:33:27.926725+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332007926_m2.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com/settings
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,560) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.087890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.34861112,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.34513888,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Google","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"bounds":{"left":0.015625,"top":0.37708333,"width":0.014453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"bounds":{"left":0.015625,"top":0.40555555,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"bounds":{"left":0.015625,"top":0.4340278,"width":0.041015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false}]...
|
202437207393662236
|
8535239661752893689
|
click
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app...
|
NULL
|
|
35088
|
NULL
|
0
|
2026-04-16T09:38:35.567099+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332315567_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 22 m100% C8Thu 16 Apr 12:38:35-zshDOCKER• 8812026-04-16712:07:55.94963222026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16112:12:58.9215552\nFROM\nframes\nWHERE\n=2.123106542s2026-04-16T12:12:58.922167Z2026-04-16T12:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16712:13:01.327453Z2026-04-16T12:13:05.161772Z2026-04-16T12:17:33.113054Z2026-04-16112:17:33.11448222026-04-16T12:18:08.118639Z\nFROM\nframes\nWHERE\n-2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-64-16112:28:22.24332X72026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n2.292968792s2026-04-16T12:38:32.862866ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh|-zsh86-zsh₴7* Unable to acce...O x8INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:10 frames,3.4MBINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10frames,2.7MB→ 0.8MB (4.4x), 10 JPEGSdeleted→ 0.4MB (6.4x),10 JPEGSdeletedINFOscreenpipe_engine::event_driven_capture: contentsqlx::query:summary="SELECT id,dedup:skippingcapturefor monitor 2 (hash=5333893760344929860,trigger=visual_change)snapshot_path,device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOTNULL\nAND timestamp< ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned-64 elapsedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 64eligible framesWARNsqlx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned-1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:25 frames,8.6MB→ 1.3MB (6.8x),25 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skipping capturefor monitor 2 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:37 frames,7.8MB→ 3.3MB (2.4x), 37 JPEGSdeletedINFOscreenpipe_engine:: event_driven_capture:contentdedup:skippingcapturefor monitor 2 (hash=-8888940631032850566, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapturefor monitor 1 (hash=-8888940631032850566, trigger=click)WARNsqlx::query:summary="SELECT id,snapshot_path IS NOT NULL\nsnapshot_path,device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampANDtimestamp < ?1\nORDERBY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n*rows_affected=0 rows_returned=35 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 35eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 19 frames, 4.8MB → 1.9MB (2.5x), 19 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 70 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 44 frames, 9.6MB → 4.7MB (2.0x), 44 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)WARNsalx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n 5000\n*rows_affected=0 rows_returned=47 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 47eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 7.8MB → 1.6MB (4.9x),22 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 6.3MB 1.1MB (5.5x), 23 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 36eligible framesscreenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 6.0MB → 0.6MB (9.8x),17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.5MB → 0.7MB (6.9X), 17 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2194076432514965278, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 2 (hash=6795179045261365991,WARNsalx::query:summary="SELECT id, snapshot_path, device_name, ."trigger=click)db.statement="\n\nSELECT\n id,\n snapshot_path, \n device_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned-62 elapsedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 62 eligible frames...
|
NULL
|
1922908270216628205
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 22 m100% C8Thu 16 Apr 12:38:35-zshDOCKER• 8812026-04-16712:07:55.94963222026-04-16T12:07:56.805212Z2026-04-16T12:12:58.144484Z2026-04-16112:12:58.9215552\nFROM\nframes\nWHERE\n=2.123106542s2026-04-16T12:12:58.922167Z2026-04-16T12:12:58.957831Z2026-04-16T12:13:00.673457Z2026-04-16T12:13:01.277553Z2026-04-16712:13:01.327453Z2026-04-16T12:13:05.161772Z2026-04-16T12:17:33.113054Z2026-04-16112:17:33.11448222026-04-16T12:18:08.118639Z\nFROM\nframes\nWHERE\n-2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-64-16112:28:22.24332X72026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n2.292968792s2026-04-16T12:38:32.862866ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.-zsh|-zsh86-zsh₴7* Unable to acce...O x8INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:10 frames,3.4MBINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:10frames,2.7MB→ 0.8MB (4.4x), 10 JPEGSdeleted→ 0.4MB (6.4x),10 JPEGSdeletedINFOscreenpipe_engine::event_driven_capture: contentsqlx::query:summary="SELECT id,dedup:skippingcapturefor monitor 2 (hash=5333893760344929860,trigger=visual_change)snapshot_path,device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOTNULL\nAND timestamp< ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned-64 elapsedINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:found 64eligible framesWARNsqlx::query:summary="PRAGMA wal_checkpoint(TRUNCATE)"db.statement=""rows_affected=0 rows_returned-1 elapsed=1.761321875sINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:25 frames,8.6MB→ 1.3MB (6.8x),25 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skipping capturefor monitor 2 (hash=5333893760344929860,trigger=click)INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:37 frames,7.8MB→ 3.3MB (2.4x), 37 JPEGSdeletedINFOscreenpipe_engine:: event_driven_capture:contentdedup:skippingcapturefor monitor 2 (hash=-8888940631032850566, trigger=click)INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcapturefor monitor 1 (hash=-8888940631032850566, trigger=click)WARNsqlx::query:summary="SELECT id,snapshot_path IS NOT NULL\nsnapshot_path,device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampANDtimestamp < ?1\nORDERBY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n*rows_affected=0 rows_returned=35 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 35eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 19 frames, 4.8MB → 1.9MB (2.5x), 19 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 70 eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 44 frames, 9.6MB → 4.7MB (2.0x), 44 JPEGs deletedINFO screenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)WARNsalx::query:summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n 5000\n*rows_affected=0 rows_returned=47 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 47eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 22 frames, 7.8MB → 1.6MB (4.9x),22 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 23 frames, 6.3MB 1.1MB (5.5x), 23 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 36eligible framesscreenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 6.0MB → 0.6MB (9.8x),17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 17 frames, 4.5MB → 0.7MB (6.9X), 17 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2194076432514965278, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skippingcapture for monitor 2 (hash=6795179045261365991,WARNsalx::query:summary="SELECT id, snapshot_path, device_name, ."trigger=click)db.statement="\n\nSELECT\n id,\n snapshot_path, \n device_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected-0 rows_returned-62 elapsedINFO screenpipe_engine::snapshot_compaction: snapshot compaction: found 62 eligible frames...
|
35087
|
|
35090
|
NULL
|
0
|
2026-04-16T09:38:45.039647+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332325039_m2.jpg...
|
Firefox
|
Jiminny — Work
|
True
|
app.dev.jiminny.com
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In
Sign In
google Sign in with Google
Sign in with Google
microsoft Sign in with Office 365
Sign in with Office 365
Login via SSO
Login via SSO
EU
EU
Worldwide
Don’t have account yet? Speak to your sales leader to get an invite.
By using this service you agree to the
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
TERMS
TERMS
KNOWLEDGE BASE
KNOWLEDGE BASE
BLOG
BLOG...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira","depth":4,"bounds":{"left":0.00234375,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"[SRD-6793] Les Mills activity types not pulling in - Jira","depth":4,"bounds":{"left":0.019921875,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app","depth":4,"bounds":{"left":0.037890624,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Pipelines - jiminny/app","depth":4,"bounds":{"left":0.055859376,"top":0.045138888,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Feed — jiminny — Sentry","depth":4,"bounds":{"left":0.0734375,"top":0.045138888,"width":0.01796875,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Inbox (1,560) - lukas.kovalik@jiminny.com - Jiminny Mail","depth":4,"bounds":{"left":0.00234375,"top":0.07361111,"width":0.017578125,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Jiminny x Shiji - Reconnecting the platform","depth":4,"bounds":{"left":0.0,"top":0.11111111,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny x Shiji - Reconnecting the platform","depth":5,"bounds":{"left":0.015625,"top":0.12083333,"width":0.087890625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"For you - Confluence","depth":4,"bounds":{"left":0.0,"top":0.13958333,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"For you - Confluence","depth":5,"bounds":{"left":0.015625,"top":0.14930555,"width":0.04296875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Lukas Kovalik - Time Off","depth":4,"bounds":{"left":0.0,"top":0.16805555,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Lukas Kovalik - Time Off","depth":5,"bounds":{"left":0.015625,"top":0.17777778,"width":0.049609374,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Product Growth Platform | Userpilot","depth":4,"bounds":{"left":0.0,"top":0.19652778,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Product Growth Platform | Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.20625,"width":0.07304688,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Userpilot","depth":4,"bounds":{"left":0.0,"top":0.225,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Userpilot","depth":5,"bounds":{"left":0.015625,"top":0.23472223,"width":0.01875,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.2534722,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.26319444,"width":0.24101563,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.28194445,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.29166666,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"New Tab","depth":4,"bounds":{"left":0.0,"top":0.31041667,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"New Tab","depth":5,"bounds":{"left":0.015625,"top":0.3201389,"width":0.017578125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny","depth":4,"bounds":{"left":0.0,"top":0.33888888,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true},{"role":"AXStaticText","text":"Jiminny","depth":5,"bounds":{"left":0.015625,"top":0.34861112,"width":0.015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Close tab","depth":5,"bounds":{"left":0.07890625,"top":0.34513888,"width":0.009375,"height":0.016666668},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXRadioButton","text":"Google","depth":4,"bounds":{"left":0.0,"top":0.3673611,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Google","depth":5,"bounds":{"left":0.015625,"top":0.37708333,"width":0.014453125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":4,"bounds":{"left":0.0,"top":0.39583334,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"IntegrationAccessor | Membrane SDK - v0.28.1","depth":5,"bounds":{"left":0.015625,"top":0.40555555,"width":0.0953125,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Jiminny · Membrane","depth":4,"bounds":{"left":0.0,"top":0.42430556,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Jiminny · Membrane","depth":5,"bounds":{"left":0.015625,"top":0.4340278,"width":0.041015625,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":4,"bounds":{"left":0.0,"top":0.45277777,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app","depth":5,"bounds":{"left":0.015625,"top":0.4625,"width":0.24335937,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":4,"bounds":{"left":0.0,"top":0.48125,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Symfony\\Component\\Debug\\Exception\\FatalThrowableError: League\\Flysystem\\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line","depth":5,"bounds":{"left":0.015625,"top":0.49097222,"width":0.53398436,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXRadioButton","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":4,"bounds":{"left":0.0,"top":0.50972223,"width":0.09375,"height":0.028472222},"help_text":"","role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"App \"Zoho CRM\" · Kavita · Membrane - 16 April 2026","depth":5,"bounds":{"left":0.015625,"top":0.51944447,"width":0.10859375,"height":0.009722223},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"New Tab","depth":4,"bounds":{"left":0.003125,"top":0.5395833,"width":0.08710937,"height":0.022222223},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Customize sidebar","depth":6,"bounds":{"left":0.003125,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open Google Gemini (⌃X)","depth":6,"bounds":{"left":0.01640625,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Tabs from other devices","depth":6,"bounds":{"left":0.029296875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open history (⇧⌘H)","depth":6,"bounds":{"left":0.0421875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXCheckBox","text":"Open bookmarks (⌘B)","depth":6,"bounds":{"left":0.05546875,"top":0.97430557,"width":0.0125,"height":0.022222223},"help_text":"","role_description":"toggle button","subrole":"AXToggle","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXHeading","text":"Sign In","depth":9,"bounds":{"left":0.6917969,"top":0.4125,"width":0.1640625,"height":0.016666668},"help_text":"","role_description":"heading","subrole":"AXUnknown"},{"role":"AXStaticText","text":"Sign In","depth":10,"bounds":{"left":0.7597656,"top":0.41041666,"width":0.027734375,"height":0.020833334},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"google Sign in with Google","depth":9,"bounds":{"left":0.70820314,"top":0.46388888,"width":0.13125,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Google","depth":11,"bounds":{"left":0.74921876,"top":0.47152779,"width":0.048828125,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"microsoft Sign in with Office 365","depth":9,"bounds":{"left":0.70820314,"top":0.5048611,"width":0.13125,"height":0.027777778},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Sign in with Office 365","depth":11,"bounds":{"left":0.74492186,"top":0.5125,"width":0.057421874,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Login via SSO","depth":9,"bounds":{"left":0.70820314,"top":0.54583335,"width":0.13125,"height":0.027777778},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Login via SSO","depth":11,"bounds":{"left":0.75625,"top":0.5534722,"width":0.03515625,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"EU","depth":9,"bounds":{"left":0.7457031,"top":0.60833335,"width":0.018359374,"height":0.025},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"EU","depth":10,"bounds":{"left":0.7511719,"top":0.6145833,"width":0.007421875,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXButton","text":"Worldwide","depth":9,"bounds":{"left":0.7640625,"top":0.60833335,"width":0.0375,"height":0.025},"help_text":"","role_description":"button","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Don’t have account yet? Speak to your sales leader to get an invite.","depth":9,"bounds":{"left":0.7050781,"top":0.8611111,"width":0.1375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"By using this service you agree to the","depth":9,"bounds":{"left":0.6976563,"top":0.8763889,"width":0.07773437,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Privacy Policy","depth":9,"bounds":{"left":0.7753906,"top":0.8763889,"width":0.029296875,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Privacy Policy","depth":10,"bounds":{"left":0.7753906,"top":0.8763889,"width":0.029296875,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":"and","depth":9,"bounds":{"left":0.8046875,"top":0.8763889,"width":0.009765625,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"Terms of Service","depth":9,"bounds":{"left":0.8144531,"top":0.8763889,"width":0.034375,"height":0.010416667},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"Terms of Service","depth":10,"bounds":{"left":0.8144531,"top":0.8763889,"width":0.034375,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXStaticText","text":".","depth":9,"bounds":{"left":0.84882814,"top":0.8763889,"width":0.00078125,"height":0.010416667},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"TERMS","depth":8,"bounds":{"left":0.70625,"top":0.92083335,"width":0.033984374,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"TERMS","depth":9,"bounds":{"left":0.7140625,"top":0.92083335,"width":0.018359374,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"KNOWLEDGE BASE","depth":8,"bounds":{"left":0.740625,"top":0.92083335,"width":0.06601562,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"KNOWLEDGE BASE","depth":9,"bounds":{"left":0.7484375,"top":0.92083335,"width":0.050390624,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"},{"role":"AXLink","text":"BLOG","depth":8,"bounds":{"left":0.8070313,"top":0.92083335,"width":0.033984374,"height":0.011805556},"help_text":"","role_description":"link","subrole":"AXUnknown","is_enabled":true,"is_focused":false,"is_selected":false},{"role":"AXStaticText","text":"BLOG","depth":9,"bounds":{"left":0.8148438,"top":0.92083335,"width":0.01484375,"height":0.011805556},"help_text":"","role_description":"text","subrole":"AXUnknown"}]...
|
-8421734735842618831
|
-3282464521272360231
|
visual_change
|
accessibility
|
NULL
|
Platform Sprint 2 Q2 - Platform Team - Scrum Board Platform Sprint 2 Q2 - Platform Team - Scrum Board - Jira
[SRD-6793] Les Mills activity types not pulling in - Jira
JY-20543 add AJ reports User pilot tracking by LakyLak · Pull Request #11932 · jiminny/app
Pipelines - jiminny/app
Feed — jiminny — Sentry
Inbox (1,560) - [EMAIL] - Jiminny Mail
Jiminny x Shiji - Reconnecting the platform
Jiminny x Shiji - Reconnecting the platform
For you - Confluence
For you - Confluence
Lukas Kovalik - Time Off
Lukas Kovalik - Time Off
Product Growth Platform | Userpilot
Product Growth Platform | Userpilot
Userpilot
Userpilot
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
fix(security): composer dependency updates – 2026-04-15 by github-actions[bot] · Pull Request #11970 · jiminny/app
Jiminny
Jiminny
New Tab
New Tab
Jiminny
Jiminny
Close tab
Google
Google
IntegrationAccessor | Membrane SDK - v0.28.1
IntegrationAccessor | Membrane SDK - v0.28.1
Jiminny · Membrane
Jiminny · Membrane
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Fix an autocomplete mistake that swapped Event for EventListener. by Vasil-Jiminny · Pull Request #11977 · jiminny/app
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
Symfony\Component\Debug\Exception\FatalThrowableError: League\Flysystem\Filesystem::has(): Argument #1 ($location) must be of type string, null given, called in /home/jiminny/vendor/laravel/framework/src/Illuminate/Filesystem/FilesystemAdapter.php on line
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
App "Zoho CRM" · Kavita · Membrane - 16 April 2026
New Tab
Customize sidebar
Open Google Gemini (⌃X)
Tabs from other devices
Open history (⇧⌘H)
Open bookmarks (⌘B)
Sign In
Sign In
google Sign in with Google
Sign in with Google
microsoft Sign in with Office 365
Sign in with Office 365
Login via SSO
Login via SSO
EU
EU
Worldwide
Don’t have account yet? Speak to your sales leader to get an invite.
By using this service you agree to the
Privacy Policy
Privacy Policy
and
Terms of Service
Terms of Service
.
TERMS
TERMS
KNOWLEDGE BASE
KNOWLEDGE BASE
BLOG
BLOG...
|
NULL
|
|
35196
|
NULL
|
0
|
2026-04-16T09:43:49.875787+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332629875_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 17 m100% C8Thu 16 Apr 12:43:49-zshDOCKERO 8812026-04-16712:17:33.114482Z2026-04-16T12:18:08.118639Z\nFROM\nframes\nWHERE\n=2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16712:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407ZInFROMnframes \nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n=2.292968792s2026-04-16T12:38:32.862866Z2026-04-16T12:38:36.663662Z2026-04-16T12:38:40.494359Z2026-04-16T12:38:48.259466Z2026-04-16T12:39:50.224797Z2026-04-16T12:41:08.697387Z2026-04-16T12:41:16.481294Z2026-04-16T12:41:31.886494Z2026-04-16T12:41:31..886497Z2026-04-16T12:41:49..234393Z2026-04-16T12:43:23.068015Z2026-04-16T12:43:40.579402Z2026-04-16T12:43:42.626361Z2026-04-16T12:43:49.177586ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.₴84-zsh|-zsh86-zsh₴7* Unable to acce...O 88INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcaptureforWARNsqlx::query:monitor 1 (hash=-8888940631032850566, trigger=click)summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDERBY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=35 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 35eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 19 frames, 4.8MB → 1. 9MB(2.5x), 19 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 44 frames,9.6MB → 4.7MB (2.0x),44 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:WARNskipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)sqlx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-47 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 47eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 22 frames,7.8MB→ 1.6MB(4.9x),22 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 23 frames,6.3MB→ 1.1MBINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames(5.5x),23 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 17 frames, 6.0MB + 0.6MB (9.8x), 17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 17 frames, 4.5MB→ 0.7MB (6.9x), 17 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2194076432514965278, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)screenpipe_engine::event_driven_capture: content dedup:skippingcapture for monitor 2 (hash=6795179045261365991,trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-62 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 62eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 32 frames, 11.2MB → 1.7MB (6.6x), 32 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames,7.6MB → 1.4MB (5.6x),28 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7055607398056673531, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skippingcapture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=4434561267597224148, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 76 eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 48 frames, 9.5MB → 3.9MB (2.4x), 48 JPEGs deleted...
|
NULL
|
999898098587411716
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpSupport Daily - in 2h 17 m100% C8Thu 16 Apr 12:43:49-zshDOCKERO 8812026-04-16712:17:33.114482Z2026-04-16T12:18:08.118639Z\nFROM\nframes\nWHERE\n=2.793811083s2026-04-16T12:18:08.118863Z2026-04-16T12:18:09.355761Z2026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16712:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407ZInFROMnframes \nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n=2.292968792s2026-04-16T12:38:32.862866Z2026-04-16T12:38:36.663662Z2026-04-16T12:38:40.494359Z2026-04-16T12:38:48.259466Z2026-04-16T12:39:50.224797Z2026-04-16T12:41:08.697387Z2026-04-16T12:41:16.481294Z2026-04-16T12:41:31.886494Z2026-04-16T12:41:31..886497Z2026-04-16T12:41:49..234393Z2026-04-16T12:43:23.068015Z2026-04-16T12:43:40.579402Z2026-04-16T12:43:42.626361Z2026-04-16T12:43:49.177586ZDEV (docker)282APP (-zsh)83ec2-user@ip-10-30-.₴84-zsh|-zsh86-zsh₴7* Unable to acce...O 88INFOscreenpipe_engine::event_driven_capture:contentdedup:skippingcaptureforWARNsqlx::query:monitor 1 (hash=-8888940631032850566, trigger=click)summary="SELECT id, snapshot_path, device_name,db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDERBY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=35 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 35eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 14 frames, 4.8MB → 1.1MB (4.6x), 14 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 19 frames, 4.8MB → 1. 9MB(2.5x), 19 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24 frames, 8.4MB → 0.9MB (9.2x), 24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 44 frames,9.6MB → 4.7MB (2.0x),44 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:WARNskipping capture for monitor 1 (hash=-7442755362469703643, trigger=click)sqlx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-47 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 47eligibleframesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 22 frames,7.8MB→ 1.6MB(4.9x),22 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 23 frames,6.3MB→ 1.1MBINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 36 eligible frames(5.5x),23 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 17 frames, 6.0MB + 0.6MB (9.8x), 17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 17 frames, 4.5MB→ 0.7MB (6.9x), 17 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=-2194076432514965278, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)screenpipe_engine::event_driven_capture: content dedup:skippingcapture for monitor 2 (hash=6795179045261365991,trigger=click)WARNsqlx::query:summary="SELECT id, snapshot_path, device_name, ..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-62 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 62eligible framesINFOINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 32 frames, 11.2MB → 1.7MB (6.6x), 32 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames,7.6MB → 1.4MB (5.6x),28 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7055607398056673531, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 1 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skippingcapture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:INFOskipping capture for monitor 1 (hash=4434561267597224148, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: found 76 eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 48 frames, 9.5MB → 3.9MB (2.4x), 48 JPEGs deleted...
|
NULL
|
|
35197
|
NULL
|
0
|
2026-04-16T09:43:49.847511+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332629847_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny kProject vpip arlisahO composer.jsonO composer.lock0 dependency-checker.json0 dev.json© ReportController.phpC TokenBuilder.php©TeamSetupController.phpxphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php© AutomatedReportsService.phpC CreateActivityLoggedEvent.phpActivityLoagea.onc=ids.txtE infection.json.distRequestGenerateReportJob.phpM+INS ALL.mdM- INIEKNALWEOROOKSEIUPjiminny_storageM+ lIcenses.moM MakefileO package-lock.json)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controllerpublic function integrationAppConnect(): JsonResponse/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);165166167-168A4 L2 N Y 169170171E phpstan.neon.distEphpstan-baseline.neon191< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xml/** @var ?SocialAccount $socialAccount */$socialAccount = $user->getSocialAccount($crmProviderKey);if ($socialAccount === null) {$this->logger-›error(' [IntegrationApp] Unexpected error. Social account is missing.', 177'team_id' => $team->getId(),178'iapR-provider' => $realProviderKey,provider' => $crmProviderKey,us vetur.config.is]):M+ WEBHOOK_FILTERING_IMPLE> th External LibrariesE® Scratches and Consolesreturn response()->json([~ D Database Consolessuccess → Tause.'message' => 'Something went wrong. Social account is cannot be found.',E custom.logA console [PROD]E laravel.logA SF [iminny@localhost] xA HS_local [jiminny@localhost]Al console [EU]L console [STAGING]Tx: Auto vPlaygroundSELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;A console [EU]C DEAL RISKS EUI&D|1=U42UFU1v & minnvo ocanostc consoe lminnvolocaln4 DI [jiminny@localhost]A HS_local [jiminny@local4 SF [jiminny@localhost]A zoho_dev [jiminny@locaV A PROD->setStatusCode( code:JsonResponse::HTTP_FAILED_DEPENDENCY);$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);$socialAccount->save);183184186187188189190191 v192Sthis-›logger->info('[IntegrationApp] Social account is connected.', [teal1o s sreali-voeclo.'LapR-provider' = $realProviderKey,provlaer=> $crmProviderKey,services+,ocv M DatabaseI secondary_phone TShULL<null><null>SnULl>select * from permissions; # 158select * from roles;select * from permission_roleselect * troiteams where id = 1;select * fromgroups g JOIN playbooks p 1.n<->1: on g.playbook_id = p.id where g.team_id = 1;select * fromgroups where id = 28;select * fromplaybooks where team_id = 1;select * fromplaybooks where id = 179;select * fromplaybook_categories where id = 1391;select * from crm_profiles where user_id = 143;select * from activities where crm_configuration_id = 39 and type = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6FpMACSELECT ar.ig,ar.wuid, ar.mediantype, ar.status, a.tvReFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repontoidWHERE a.txRe = 'ask_iiminnx'LIMIT 10;select * from teams where id = 3143;select * from crm_configurations where id = 500;select * from users where name = 'Integration Account'; # 1695SELECT * FROM social_accounts WHERE sociable_id = 1695;Tx: Auto vcaller_id YMjob_title_id YSnULLL group_id Yci consoe s124 ms& minnvo ocalnost4 SF 757 mgA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDockerOutputf jiminny.users X5 rowsv• phone Y1 <null> [PHONE]chulo [PHONE] KnUll> [PHONE]KnuLo shullsnull><null>ShULLI two_factor_reset_code TE team_id T151 | <null>124 <null>3 <null>2 <null>ZnUll>273143I timezone Y! language T50 Europe/Sofiaen US46 Europe/Sofiaen_US2 Europe/Sofiaen_US3 Europe/Sofiaen_GBshuuoo curodesotlaj Support Daily • in 2 h 17 mAU AutomatedReportsCommandTestv100% C4Thu 16 Apr 12:43:49Cascadema iminnyv09 A12 X2 X4 ^Integration App ConneSUVIINO HEN AHLEYTOLEUHOPPE CACHEEE CONCH JE O TNOCANNERONnos wnenthe user clicks connect. It checks the current state of the integration. Theresponse contains:json"connection"."connected": true,"state": "READY"This means Integration App already has a valid OAuth connection for thisteam (it was connected on 2025-10-31, last active 2026-04-16 ). The CRMcrecenuas arealve on neclaron Aoo's siceThe Problem - The Token Is Not RefreshedOur SocialAccount in the DB has state = STATE_FULL_REFRESH_REQUIRED .This happens because somewhere after the original connection, ValidateTeamActiveconnecclonJob ran and marked it aisconnected, or the loken wasnever properly set to STATE_CONNECTED in the first place.une alsconneet oetween tne two systems.sareIntegration App (api.getmembrane.comconnected: true, state: READY -®Auth is aliveOur DB ( social_accounts table)state = full-refresh — thinks it'sdisconnectedWhy the connect. vue Page Is Shownvauoarecrnconnect1onkeoutred.ra1c.ono:4v-4%0 phpif ($user->isCrmRequired()&& (ScrmAccount === null || $crmAccount→>isDisconnected)return true; // - redirects to /connect pageAsk anything (&4L)+ @ CadeClaude Sonnet 4.6wI conference_number TI conference_pin TCSVv® B,I conference_slug YShULlShULLanreoraronaccounu<null><null>SnUL><null><null><null>integrationaccount36integrationaccountJim<null>ShULlShULLanreararonaccount5 rows retrieved starting from 1 in 661 ms (execution: 54 ms, fetching: 607 ms)W Windsurf Teams191:16UTF-84 spaces...
|
NULL
|
4124003145911284370
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCodeLaravelRefactorToo PhpStormFileEditViewNavigateCodeLaravelRefactorToolsWindowHelpFV faVsco.js v#11894 on JY-18909-automated-reports-ask-iminny kProject vpip arlisahO composer.jsonO composer.lock0 dependency-checker.json0 dev.json© ReportController.phpC TokenBuilder.php©TeamSetupController.phpxphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php© AutomatedReportsService.phpC CreateActivityLoggedEvent.phpActivityLoagea.onc=ids.txtE infection.json.distRequestGenerateReportJob.phpM+INS ALL.mdM- INIEKNALWEOROOKSEIUPjiminny_storageM+ lIcenses.moM MakefileO package-lock.json)AutomatedRenortscallbackservice.onv© RequestGenerateAskJiminnyReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends Controllerpublic function integrationAppConnect(): JsonResponse/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);165166167-168A4 L2 N Y 169170171E phpstan.neon.distEphpstan-baseline.neon191< phpunit.xmlTeraw_sql_query.sqlM-R-ADME. molộ sonar-project.properties= test.py<> Untitled Diagram.xml/** @var ?SocialAccount $socialAccount */$socialAccount = $user->getSocialAccount($crmProviderKey);if ($socialAccount === null) {$this->logger-›error(' [IntegrationApp] Unexpected error. Social account is missing.', 177'team_id' => $team->getId(),178'iapR-provider' => $realProviderKey,provider' => $crmProviderKey,us vetur.config.is]):M+ WEBHOOK_FILTERING_IMPLE> th External LibrariesE® Scratches and Consolesreturn response()->json([~ D Database Consolessuccess → Tause.'message' => 'Something went wrong. Social account is cannot be found.',E custom.logA console [PROD]E laravel.logA SF [iminny@localhost] xA HS_local [jiminny@localhost]Al console [EU]L console [STAGING]Tx: Auto vPlaygroundSELECT * FROM groups WHERE id = 1439;SELECT * FROM users WHERE group_id = 1439;A console [EU]C DEAL RISKS EUI&D|1=U42UFU1v & minnvo ocanostc consoe lminnvolocaln4 DI [jiminny@localhost]A HS_local [jiminny@local4 SF [jiminny@localhost]A zoho_dev [jiminny@locaV A PROD->setStatusCode( code:JsonResponse::HTTP_FAILED_DEPENDENCY);$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);$socialAccount->save);183184186187188189190191 v192Sthis-›logger->info('[IntegrationApp] Social account is connected.', [teal1o s sreali-voeclo.'LapR-provider' = $realProviderKey,provlaer=> $crmProviderKey,services+,ocv M DatabaseI secondary_phone TShULL<null><null>SnULl>select * from permissions; # 158select * from roles;select * from permission_roleselect * troiteams where id = 1;select * fromgroups g JOIN playbooks p 1.n<->1: on g.playbook_id = p.id where g.team_id = 1;select * fromgroups where id = 28;select * fromplaybooks where team_id = 1;select * fromplaybooks where id = 179;select * fromplaybook_categories where id = 1391;select * from crm_profiles where user_id = 143;select * from activities where crm_configuration_id = 39 and type = 'conference'and crm_provider_id IS NOT NULL ORDER by id desc;select * from activities where id = 422003; # 00U0400000pB6FpMACSELECT ar.ig,ar.wuid, ar.mediantype, ar.status, a.tvReFROM automated_report_results arJOIN automated_reports a ON a.id = ar.repontoidWHERE a.txRe = 'ask_iiminnx'LIMIT 10;select * from teams where id = 3143;select * from crm_configurations where id = 500;select * from users where name = 'Integration Account'; # 1695SELECT * FROM social_accounts WHERE sociable_id = 1695;Tx: Auto vcaller_id YMjob_title_id YSnULLL group_id Yci consoe s124 ms& minnvo ocalnost4 SF 757 mgA HS_localV A PRODA console 10 sV L STAGING4, console 2 s 670 msDockerOutputf jiminny.users X5 rowsv• phone Y1 <null> [PHONE]chulo [PHONE] KnUll> [PHONE]KnuLo shullsnull><null>ShULLI two_factor_reset_code TE team_id T151 | <null>124 <null>3 <null>2 <null>ZnUll>273143I timezone Y! language T50 Europe/Sofiaen US46 Europe/Sofiaen_US2 Europe/Sofiaen_US3 Europe/Sofiaen_GBshuuoo curodesotlaj Support Daily • in 2 h 17 mAU AutomatedReportsCommandTestv100% C4Thu 16 Apr 12:43:49Cascadema iminnyv09 A12 X2 X4 ^Integration App ConneSUVIINO HEN AHLEYTOLEUHOPPE CACHEEE CONCH JE O TNOCANNERONnos wnenthe user clicks connect. It checks the current state of the integration. Theresponse contains:json"connection"."connected": true,"state": "READY"This means Integration App already has a valid OAuth connection for thisteam (it was connected on 2025-10-31, last active 2026-04-16 ). The CRMcrecenuas arealve on neclaron Aoo's siceThe Problem - The Token Is Not RefreshedOur SocialAccount in the DB has state = STATE_FULL_REFRESH_REQUIRED .This happens because somewhere after the original connection, ValidateTeamActiveconnecclonJob ran and marked it aisconnected, or the loken wasnever properly set to STATE_CONNECTED in the first place.une alsconneet oetween tne two systems.sareIntegration App (api.getmembrane.comconnected: true, state: READY -®Auth is aliveOur DB ( social_accounts table)state = full-refresh — thinks it'sdisconnectedWhy the connect. vue Page Is Shownvauoarecrnconnect1onkeoutred.ra1c.ono:4v-4%0 phpif ($user->isCrmRequired()&& (ScrmAccount === null || $crmAccount→>isDisconnected)return true; // - redirects to /connect pageAsk anything (&4L)+ @ CadeClaude Sonnet 4.6wI conference_number TI conference_pin TCSVv® B,I conference_slug YShULlShULLanreoraronaccounu<null><null>SnUL><null><null><null>integrationaccount36integrationaccountJim<null>ShULlShULLanreararonaccount5 rows retrieved starting from 1 in 661 ms (execution: 54 ms, fetching: 607 ms)W Windsurf Teams191:16UTF-84 spaces...
|
NULL
|
|
35354
|
NULL
|
0
|
2026-04-16T09:49:17.495106+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332957495_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp<abl# Support Daily • in 2h 11 mA100% (<47Thu 16 Apr 12:49:17-zshDOCKERO 8812026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n=2.292968792s2026-04-16T12:38:32.862866Z2026-04-16T12:38:36.663662Z2026-04-16T12:38:40.494359Z2026-04-16T12:38:48.259466Z2026-04-16T12:39:50.224797Z2026-04-16T12:41:08.697387Z2026-04-16712:41:16.481294Z2026-04-16T12:41:31.886494Z2026-04-16112:41:31188649742026-04-16T12:41:49.234393Z2026-04-16T12:43:23.068015Z2026-04-16T12:43:40.579402Z2026-04-16T12:43:42.626361Z2026-04-16T12:43:49.177586Z2026-04-16T12:48:52.212780Z\nFROM\nframes\nWHERE\n=3.0193855s2026-04-16T12:48:52.213623Z2026-04-16T12:48:55.648652Z2026-04-16T12:49:03.160903ZDEV (docker)APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zsh86-zsh₴7* Unable to acce...O 88INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:19 frames,4.8MB→ 1.9MBINFO(2.5x),19 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24frames,8.4MB→ 0.9MB (9.2x),24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 44 frames,9.6MB→ 4.7MB (2.0x),44 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture:content dedup: skippingcapture for monitor 1 Chash=-7442755362469703643,WARNsalx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\ntrigger=click)id, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=47 elapsedINFO screenpipe_engine::snapshot_compaction: snapshotcompaction:found47eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 22 frames, 7.8MB + 1. 6MB(4.9x),22 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:23 frames, 6.3MB+ 1.1MB(5.5x),23 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 36eligible framesINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:17 frames, 6.0MB+ 0.6MB(9.8x), 17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:17 frames,4.5MB→ 0.7MBINFOscreenpipe_engine::event_driven_capture: contentdedup:(6.9x),17 JPEGs deletedINFOskipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)screenpipe_engine:: event_driven_capture: contentdedup:skipping capture for monitor 1(hash=-2194076432514965278, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOscreenpipe_engine::event._driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOWARNscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)salx::query:summary="SELECT id, snapshot_path, device_name, .."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-62 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 62eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames,11.2MB 1.7MB (6.6x), 32 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 7.6MB → 1.4MB (5.6x),28 JPEGs deletedscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7055607398056673531, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=6795179045261365991, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4434561267597224148, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 76 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcmpaction: 48 frames,9.5MB → 3.9MB (2.4x), 48 JPEGs deletedWARNsalx::query:summary="SELECT id, snapshot_path, device_name,snapshot_path IS NOT NULL\ndb.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'timestamprows_affected-0 rows_returned=68 elapsedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 68eligible framesscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames,10.OMB → 2.0MB (5.0x), 28 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.5MB 1.8MB (3.6x), 38 JPEGs deleted...
|
NULL
|
-8408536669326678738
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp<abl# Support Daily • in 2h 11 mA100% (<47Thu 16 Apr 12:49:17-zshDOCKERO 8812026-04-16T12:18:11.425262Z2026-04-16T12:23:11.510538Z2026-04-16T12:23:13.076038Z2026-04-16T12:23:16.818128Z2026-04-16T12:28:03.394151Z2026-04-16T12:28:03.398031Z2026-04-16T12:28:18.784407Z\nFROM\nframes\nWHERE\n-1.954215s2026-04-16T12:28:18.784820Z2026-04-16T12:28:22.243328Z2026-04-16T12:28:26.504403Z2026-04-16T12:33:26.810059Z2026-04-16T12:33:28.374803Z2026-04-16T12:33:30.518880Z2026-04-16T12:34:08.993424Z2026-04-16T12:34:16.175054Z2026-04-16T12:36:08.661336Z2026-04-16T12:36:36.910015Z2026-04-16T12:36:56.087829Z2026-04-16T12:38:32.051328Z2026-04-16T12:38:32.861349Z\nFROM\nframes\nWHERE\n=2.292968792s2026-04-16T12:38:32.862866Z2026-04-16T12:38:36.663662Z2026-04-16T12:38:40.494359Z2026-04-16T12:38:48.259466Z2026-04-16T12:39:50.224797Z2026-04-16T12:41:08.697387Z2026-04-16712:41:16.481294Z2026-04-16T12:41:31.886494Z2026-04-16112:41:31188649742026-04-16T12:41:49.234393Z2026-04-16T12:43:23.068015Z2026-04-16T12:43:40.579402Z2026-04-16T12:43:42.626361Z2026-04-16T12:43:49.177586Z2026-04-16T12:48:52.212780Z\nFROM\nframes\nWHERE\n=3.0193855s2026-04-16T12:48:52.213623Z2026-04-16T12:48:55.648652Z2026-04-16T12:49:03.160903ZDEV (docker)APP (-zsh)83ec2-user@ip-10-30-.-zsh• 85-zsh86-zsh₴7* Unable to acce...O 88INFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:19 frames,4.8MB→ 1.9MBINFO(2.5x),19 JPEGSdeletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 70eligible framesscreenpipe_engine::snapshot_compaction: snapshotcompaction: 24frames,8.4MB→ 0.9MB (9.2x),24 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 44 frames,9.6MB→ 4.7MB (2.0x),44 JPEGs deletedINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=-7442755362469703643, trigger=click)INFOscreenpipe_engine::event_driven_capture:content dedup: skippingcapture for monitor 1 Chash=-7442755362469703643,WARNsalx::query:summary="SELECT id,snapshot_path, device_name,db.statement="\n\nSELECT\ntrigger=click)id, Insnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n 5000\n" rows_affected=0 rows_returned=47 elapsedINFO screenpipe_engine::snapshot_compaction: snapshotcompaction:found47eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotINFOcompaction: 22 frames, 7.8MB + 1. 6MB(4.9x),22 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:23 frames, 6.3MB+ 1.1MB(5.5x),23 JPEGs deletedscreenpipe_engine::snapshot_compaction: snapshotcompaction:found 36eligible framesINFOscreenpipe_engine::snapshot_compaction:snapshotcompaction:17 frames, 6.0MB+ 0.6MB(9.8x), 17 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction:17 frames,4.5MB→ 0.7MBINFOscreenpipe_engine::event_driven_capture: contentdedup:(6.9x),17 JPEGs deletedINFOskipping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)screenpipe_engine:: event_driven_capture: contentdedup:skipping capture for monitor 1(hash=-2194076432514965278, trigger=click)INFOscreenpipe_engine::event_driven_capture: contentdedup:skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6115512118410074134, trigger=click)INFOscreenpipe_engine::event._driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOWARNscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)salx::query:summary="SELECT id, snapshot_path, device_name, .."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestampsnapshot_path IS NOT NULL\nAND timestamp < ?1\nORDER BY\n device_name, \ntimestamp ASC\nLIMIT\n5000\n" rows_affected-0 rows_returned-62 elapsedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 62eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 32 frames,11.2MB 1.7MB (6.6x), 32 JPEGs deletedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames, 7.6MB → 1.4MB (5.6x),28 JPEGs deletedscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=7055607398056673531, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 2 (hash=1577438924825351478, trigger=click)INFOINFOscreenpipe_engine::event_driven_capture: content dedup:skipping capture for monitor 1 (hash=6795179045261365991, trigger=click)screenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 2 (hash=6795179045261365991, trigger=click)INFOscreenpipe_engine::event_driven_capture: content dedup: skipping capture for monitor 1 (hash=4434561267597224148, trigger=click)INFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 76 eligible framesINFOscreenpipe_engine::snapshot_compaction: snapshotcompaction: 26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshotcmpaction: 48 frames,9.5MB → 3.9MB (2.4x), 48 JPEGs deletedWARNsalx::query:summary="SELECT id, snapshot_path, device_name,snapshot_path IS NOT NULL\ndb.statement="\n\nSELECT\nid, \nsnapshot_path, \ndevice_name, \nAND timestamp < ?1\nORDER BY\ndevice_name, \ntimestamp ASC\nLIMIT\n5000\n'timestamprows_affected-0 rows_returned=68 elapsedINFOINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: found 68eligible framesscreenpipe_engine::snapshot_compaction: snapshot compaction: 28 frames,10.OMB → 2.0MB (5.0x), 28 JPEGs deletedINFOscreenpipe_engine::snapshot_compaction: snapshot compaction: 38 frames, 6.5MB 1.8MB (3.6x), 38 JPEGs deleted...
|
NULL
|
|
35355
|
NULL
|
0
|
2026-04-16T09:49:19.195784+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776332959195_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelpdoo.uev.minny.com7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memorane sal Jiminny Membrane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabJIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueSign in with Zoho CRM-, 0j Support Daily • in 2h 11 mA100% [2Thu 16 Apr 12:49:18U Inspecton• ConsoleD DebuggerT Network() Style Editorfilter URLsPerformanceAlI HITMLO: MemoryStoragei AccessibilityessXHRFonts Images MediaLookIesRequestResponseTiminesolack lldce© 26_ Disable Cache No Throttling + 50:SecurityDomaln200) P...@ app.dev..authenticate200 G.app.dev(200 G...ado dev..a xhrvuex.es...integration-app-token a vuex.es...403) P...^ api-iam.200 ...A api.get...204 0...A api.get...self-auth-contextself-auth-context200 c...api.get..inde--...204 0...A api.got...elnlelettol200 P...aoi.oet..204 0...A api.got...200 G.api.ger..204 0..A api.get...connection-optionsconnection-options66fe6c913202f3a165e3c14 index...66 e6c913202 3a165e3c14 xhn200 P...aongel..(200 G...A api.get...200 ...A api.get...connection"ootions0393yy5goky21ckvaar0ro? index-self-auth-context204 ....A api.get...200 G...A api.get...index-..204 0...• api.get...200 P...A api.got...204 O... A api.get...connection-optionsindex-200 G... A api.get….. self-auth-contextindex-...204 o... A api.get...self-auth-context200 c... Aa api.get...index-...200 P...A api.get...connection-options204 o... A api.get...204 o...A api.get...connection-options200 ... A api.get...66fe6c913202f3a165e3c14 index-…..204 0... A api.get...66fe6c913202f3a165e3c14 xhr200 P... A apiger...connection-options 4200 G... A api.get...11su6fgtnf62fjds8s021h?to index-...js...lranste...medders2.81 kB 9 Filter properties3.06 kB 1 JSON326KB1c: "botebc9 s/0/1salboesc40"1.21 kB 2name: "Zoho CRM"1.88 kB|3Jula: euz09801-2125-4188-0180-805150420109key: "zohocrm"715 B 0state: "READY"1.46 kB 1errors:730 B 0createdAt: "2024-10-03T10:06:09.911Z"1.06 kB 2updatedAt: "2025-07-03T06:31:13.107Z'780 B0sDeactivated: talselogoUri: "https://static.integration.app/connectors/zoho-crm/logo.png'1.45 kB 1connectorla: "0481000/02000/20023280/765 B 0connectorVersion: "2,2.0"1.05 kB 2oAuthCallbackUri: "https://api.integration.app/oauth-callback"144K86nasMissingParameters: false1.90 kB 3hasDocumentation: falsenasoperations: true138BoperationsCount: 5691.63 kB 1nasbald. wue757 B 0dataCollectionsCount: 201.06 kB 2has Events: false770 B 0eventsCount: 0nasGlobalWebhooks: false1.90 kB 3hasUdm: true740 B 0authType: "oauth2"16s kb1 connection:< 1d: "09e0atess890a00c8dd9520/" name: "Loho CRM". userld: "1eceboc8-te01-4011-03/4-2160/09146/3"T1.06 kB 2authOptions: [(.}1774 B 01.62 kB 1761 B01.05 kB 21.45 kB 630 requests 24.24 KB 40.24 KB transterredFinish: 3.41 min • DON...
|
NULL
|
5367278616681508624
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelpdoo.uev.minny.com7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memorane sal Jiminny Membrane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabJIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueSign in with Zoho CRM-, 0j Support Daily • in 2h 11 mA100% [2Thu 16 Apr 12:49:18U Inspecton• ConsoleD DebuggerT Network() Style Editorfilter URLsPerformanceAlI HITMLO: MemoryStoragei AccessibilityessXHRFonts Images MediaLookIesRequestResponseTiminesolack lldce© 26_ Disable Cache No Throttling + 50:SecurityDomaln200) P...@ app.dev..authenticate200 G.app.dev(200 G...ado dev..a xhrvuex.es...integration-app-token a vuex.es...403) P...^ api-iam.200 ...A api.get...204 0...A api.get...self-auth-contextself-auth-context200 c...api.get..inde--...204 0...A api.got...elnlelettol200 P...aoi.oet..204 0...A api.got...200 G.api.ger..204 0..A api.get...connection-optionsconnection-options66fe6c913202f3a165e3c14 index...66 e6c913202 3a165e3c14 xhn200 P...aongel..(200 G...A api.get...200 ...A api.get...connection"ootions0393yy5goky21ckvaar0ro? index-self-auth-context204 ....A api.get...200 G...A api.get...index-..204 0...• api.get...200 P...A api.got...204 O... A api.get...connection-optionsindex-200 G... A api.get….. self-auth-contextindex-...204 o... A api.get...self-auth-context200 c... Aa api.get...index-...200 P...A api.get...connection-options204 o... A api.get...204 o...A api.get...connection-options200 ... A api.get...66fe6c913202f3a165e3c14 index-…..204 0... A api.get...66fe6c913202f3a165e3c14 xhr200 P... A apiger...connection-options 4200 G... A api.get...11su6fgtnf62fjds8s021h?to index-...js...lranste...medders2.81 kB 9 Filter properties3.06 kB 1 JSON326KB1c: "botebc9 s/0/1salboesc40"1.21 kB 2name: "Zoho CRM"1.88 kB|3Jula: euz09801-2125-4188-0180-805150420109key: "zohocrm"715 B 0state: "READY"1.46 kB 1errors:730 B 0createdAt: "2024-10-03T10:06:09.911Z"1.06 kB 2updatedAt: "2025-07-03T06:31:13.107Z'780 B0sDeactivated: talselogoUri: "https://static.integration.app/connectors/zoho-crm/logo.png'1.45 kB 1connectorla: "0481000/02000/20023280/765 B 0connectorVersion: "2,2.0"1.05 kB 2oAuthCallbackUri: "https://api.integration.app/oauth-callback"144K86nasMissingParameters: false1.90 kB 3hasDocumentation: falsenasoperations: true138BoperationsCount: 5691.63 kB 1nasbald. wue757 B 0dataCollectionsCount: 201.06 kB 2has Events: false770 B 0eventsCount: 0nasGlobalWebhooks: false1.90 kB 3hasUdm: true740 B 0authType: "oauth2"16s kb1 connection:< 1d: "09e0atess890a00c8dd9520/" name: "Loho CRM". userld: "1eceboc8-te01-4011-03/4-2160/09146/3"T1.06 kB 2authOptions: [(.}1774 B 01.62 kB 1761 B01.05 kB 21.45 kB 630 requests 24.24 KB 40.24 KB transterredFinish: 3.41 min • DON...
|
NULL
|
|
35479
|
NULL
|
0
|
2026-04-16T09:54:41.396784+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333281396_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
+SlackFileEditViewGoEDHomeDMSActivityFilesLater..• +SlackFileEditViewGoEDHomeDMSActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# frontendMessagesDirect messagesG. Vasil Vasilev. Galya DimitrovaNikolay Ivanov®. Aneliya AngelovaAneliya Angelova, ...Stoyan TanevVesSteliyan GeorgievAdelina Petrova, Ili...R. Adelina Petrova::: AppsToastJira Cloud8 12BoardMore ~Thursday, March 12th ~+Friday, March 13th ~Desislav Damyanov 12:46 PMhttps://x.com/i/status/2032376017868800455X X (formerly Twitter)VoidZero (@voidzerodev) on XAnnouncing Vite+ Alpha.Now open source.To make JavaScript developers moreproductive than ever before.A single binary that:• Unifies your frontend toolchain.Show moreWednesday, March 25th ~Ilian Kyuchukov 7:57 AMhttps://videojs.org/blog/videojs-v10-beta-hello-world-againHH2Message #frontend+AaSupport Daily • in 2h 6 m100% C8Thu 16 Apr 12:54:41-zsh-zsh86-zsh₴7* Unable to acce...O 88ping capturefor monitor 2 (hash=-7442755362469703643, trigger=click)ping capture for monitor 1 (hash=-7442755362469703643, trigger=click)..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestamp_name, Intimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=47 elapsedfound 47eligibleframes22 frames, 7.8MB→ 1.6MB (4.9x),22 JPEGs deleted23 frames,6.3MB→ 1.1MB(5.5x), 23 JPEGs deletedfound 36eligible frames17 frames,6.0MB → 0.6MB (9.8x), 17 JPEGs deleted17 frames,4.5MB→ 0.7MB (6.9x),17 JPEGs deletedping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)pingcapture for monitor 1 (hash=-2194076432514965278, trigger=click)pingcapture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)ping capture for monitor 2 (hash=6115512118410074134, trigger=click)ping capture for monitor 2 (hash=6795179045261365991, trigger=click)sping capture for monitor 2 (hash=6795179045261365991,trigger=click)db.statement="\n\nSELECT\n id,\nsnapshot_path, \n device_name, \ntimestamp_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=62 elapsedfound 62 eligible frames32 frames, 11.2MB → 1.7MB (6.6x), 32 JPEGs deleted28 frames, 7.6MB → 1.4MB (5.6x),28 JPEGs deletedsping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)ping capture for monitor 1 (hash=7055607398056673531, trigger=click)pingcapture for monitor 2 (hash=1577438924825351478, trigger=click)pingcapture for monitor 2 (hash=1577438924825351478, trigger=click)ping capture for monitor 1 (hash=6795179045261365991, trigger=click)ping capture for monitor 2 (hash=6795179045261365991,trigger=click)ping capture for monitor 2 (hash=6795179045261365991,trigger=click)ping capture for monitor 1 (hash=4434561267597224148, trigger=click)found 76 eligible frames26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deleted48 frames, 9.5MB→ 3.9MB (2.4x), 48 JPEGs deleteddb.statement="\n\nSELECT\nid, Insnapshot_path, \n device_name, \ntimestamp_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=68 elapsedfound 68eligible frames28 frames, 10.OMB + 2.OMB (5.0x), 28 JPEGs deleted38 frames, 6.5MB → 1.8MB (3.6x),38 JPEGs deletedping capture for monitor 2 (hash=-844337372351140400, trigger=visual_change)found 109 eligible frames45 frames, 16.4MB 2.3MB (7.1x), 45 JPEGs deleted62 frames, 11.OMB → 4.1MB (2.7x), 62 JPEGs deleted...
|
NULL
|
-2988442366550271556
|
NULL
|
click
|
ocr
|
NULL
|
+SlackFileEditViewGoEDHomeDMSActivityFilesLater..• +SlackFileEditViewGoEDHomeDMSActivityFilesLater..•More+HistoryWindowHelp→Search Jiminny IncJiminny ...# engineering# frontend# general# infra-changes# jiminny-bg# platform-tickets# product_launches# random# releases# sofia-office# support# thank-yous# the_people_of jimi...# frontendMessagesDirect messagesG. Vasil Vasilev. Galya DimitrovaNikolay Ivanov®. Aneliya AngelovaAneliya Angelova, ...Stoyan TanevVesSteliyan GeorgievAdelina Petrova, Ili...R. Adelina Petrova::: AppsToastJira Cloud8 12BoardMore ~Thursday, March 12th ~+Friday, March 13th ~Desislav Damyanov 12:46 PMhttps://x.com/i/status/2032376017868800455X X (formerly Twitter)VoidZero (@voidzerodev) on XAnnouncing Vite+ Alpha.Now open source.To make JavaScript developers moreproductive than ever before.A single binary that:• Unifies your frontend toolchain.Show moreWednesday, March 25th ~Ilian Kyuchukov 7:57 AMhttps://videojs.org/blog/videojs-v10-beta-hello-world-againHH2Message #frontend+AaSupport Daily • in 2h 6 m100% C8Thu 16 Apr 12:54:41-zsh-zsh86-zsh₴7* Unable to acce...O 88ping capturefor monitor 2 (hash=-7442755362469703643, trigger=click)ping capture for monitor 1 (hash=-7442755362469703643, trigger=click)..."db.statement="\n\nSELECT\n id,\nsnapshot_path, \ndevice_name, \ntimestamp_name, Intimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=47 elapsedfound 47eligibleframes22 frames, 7.8MB→ 1.6MB (4.9x),22 JPEGs deleted23 frames,6.3MB→ 1.1MB(5.5x), 23 JPEGs deletedfound 36eligible frames17 frames,6.0MB → 0.6MB (9.8x), 17 JPEGs deleted17 frames,4.5MB→ 0.7MB (6.9x),17 JPEGs deletedping capture for monitor 2 (hash=-3186288122146735337, trigger=visual_change)pingcapture for monitor 1 (hash=-2194076432514965278, trigger=click)pingcapture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)ping capture for monitor 2 (hash=6115512118410074134, trigger=click)ping capture for monitor 2 (hash=6795179045261365991, trigger=click)sping capture for monitor 2 (hash=6795179045261365991,trigger=click)db.statement="\n\nSELECT\n id,\nsnapshot_path, \n device_name, \ntimestamp_name, \ntimestamp ASC\nLIMIT\n5000\n"rows_affected=0 rows_returned=62 elapsedfound 62 eligible frames32 frames, 11.2MB → 1.7MB (6.6x), 32 JPEGs deleted28 frames, 7.6MB → 1.4MB (5.6x),28 JPEGs deletedsping capture for monitor 2 (hash=-8421734735842618831, trigger=visual_change)ping capture for monitor 1 (hash=7055607398056673531, trigger=click)pingcapture for monitor 2 (hash=1577438924825351478, trigger=click)pingcapture for monitor 2 (hash=1577438924825351478, trigger=click)ping capture for monitor 1 (hash=6795179045261365991, trigger=click)ping capture for monitor 2 (hash=6795179045261365991,trigger=click)ping capture for monitor 2 (hash=6795179045261365991,trigger=click)ping capture for monitor 1 (hash=4434561267597224148, trigger=click)found 76 eligible frames26 frames, 9.1MB → 1.2MB (7.9x), 26 JPEGs deleted48 frames, 9.5MB→ 3.9MB (2.4x), 48 JPEGs deleteddb.statement="\n\nSELECT\nid, Insnapshot_path, \n device_name, \ntimestamp_name, \ntimestamp ASC\nLIMIT\n5000\n'rows_affected=0 rows_returned=68 elapsedfound 68eligible frames28 frames, 10.OMB + 2.OMB (5.0x), 28 JPEGs deleted38 frames, 6.5MB → 1.8MB (3.6x),38 JPEGs deletedping capture for monitor 2 (hash=-844337372351140400, trigger=visual_change)found 109 eligible frames45 frames, 16.4MB 2.3MB (7.1x), 45 JPEGs deleted62 frames, 11.OMB → 4.1MB (2.7x), 62 JPEGs deleted...
|
NULL
|
|
35480
|
NULL
|
0
|
2026-04-16T09:54:41.387913+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333281387_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer dependera JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranesd "siminny • Membrane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New Tab2 Zoho CRM2Linking your Zoho CRM accountPlease enter the credentials and click ConnectAccount Typein productionConnewCancelconnectedount has become disconnectedct to continueth Zoho CRM> 0halSupport Daily - in 2h 6 m100% C4Thu 16 Apr 12:54:41Status403200204200204200204• InspectorFilter URLsMetnodPOSTGETOPTIONSGETOPTIONSPOSIOPTIONS• Console D DebuggerDomainapp.dev.jiminny.com*api-iam.intercom.ioapi.getmembrane.com*api.getmembrane.comapi.cetmemorane.comapi.getmembrane.comapi.getmembrane.comA api.getmembrane.comT Network() Style Editor( PerformanceO: MemoryStoragei AccessibilityAlI HITMLessXHRFontsMediaintegration-app-tokenpingselt-auth-contextself-auth-contextzonoermconneetion-optionsIniuatolTrame.ricot041.S.2 (Xhr)Index-DOKd LAaG IS:lnindex-DOkdLAaG.Js:1/.index-DOkdLAaG.js:1/IyoejsonIsonplainjsonplain©24•Disable Cache No Throttling + 50:Transterreasize 0ms121 kB 2.651 ms188 KB SunlI 75 ms713 BOB 76ms164 KB | 1 | 142 mg740 BOB |46 ms1.05 KB 2/. 74 ms776 BO B |45 msÔ 8 requests | 5.69 kB / 8.01 kB transferred| Finish: 5.05 s load: 85 ms...
|
NULL
|
6043325936137041170
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer dependera JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranesd "siminny • Membrane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New Tab2 Zoho CRM2Linking your Zoho CRM accountPlease enter the credentials and click ConnectAccount Typein productionConnewCancelconnectedount has become disconnectedct to continueth Zoho CRM> 0halSupport Daily - in 2h 6 m100% C4Thu 16 Apr 12:54:41Status403200204200204200204• InspectorFilter URLsMetnodPOSTGETOPTIONSGETOPTIONSPOSIOPTIONS• Console D DebuggerDomainapp.dev.jiminny.com*api-iam.intercom.ioapi.getmembrane.com*api.getmembrane.comapi.cetmemorane.comapi.getmembrane.comapi.getmembrane.comA api.getmembrane.comT Network() Style Editor( PerformanceO: MemoryStoragei AccessibilityAlI HITMLessXHRFontsMediaintegration-app-tokenpingselt-auth-contextself-auth-contextzonoermconneetion-optionsIniuatolTrame.ricot041.S.2 (Xhr)Index-DOKd LAaG IS:lnindex-DOkdLAaG.Js:1/.index-DOkdLAaG.js:1/IyoejsonIsonplainjsonplain©24•Disable Cache No Throttling + 50:Transterreasize 0ms121 kB 2.651 ms188 KB SunlI 75 ms713 BOB 76ms164 KB | 1 | 142 mg740 BOB |46 ms1.05 KB 2/. 74 ms776 BO B |45 msÔ 8 requests | 5.69 kB / 8.01 kB transferred| Finish: 5.05 s load: 85 ms...
|
35478
|
|
35615
|
NULL
|
0
|
2026-04-16T09:59:59.734937+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333599734_m1.jpg...
|
Slack
|
frontend (Channel) - Jiminny Inc - 1 new item - Sl frontend (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"}]...
|
4983054966719650395
|
-1752965013497201557
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
SlackFileEditViewGoHistoryWindowHelplaal•APP (-zsh)₴4DOCKER• 881DEV (docker)882APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-vMogKjqT.js./public/vue-assets/assets/ondemand-DgxEX09i.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-COSgQDWm.js../public/vue-assets/assets/AskAnything-BiYJNLXH.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-0eTkGyuH.js:./public/vue-assets/assets/deal-view-B4d9Fnc0.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-CJz1PCG2.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-BGmZPXYh.js../public/vue-assets/assets/StatusBadge-D_dxGN0U.js./public/vue-assets/assets/kiosk-hoNoVi3Z.js./public/vue-assets/assets/deal-insights-CCCD53q2.js../public/vue-assets/assets/ListView-Daurhtak.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js:./public/vue-assets/assets/dashboard-B-uDq9Qs.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-unCNBfeg.js../public/vue-assets/assets/OrgSettingsLayout-Br7DRJ0o.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-CB909wM4.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CPsGbra7.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js./public/vue-assets/assets/live-DbuadCCc.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-CV_ZMn85.js:./public/vue-assets/assets/logged-in-layout-qoUV-hWG.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.05slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 2h 1 m-zshgzip:10.06kBgzip:9.39kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.35kBgzip:16.46kBgzip:15.07kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.84kBgz1p:22.94kBgzip:22.63kB9z1p:28.18kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.05kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmap:92.74kBmap:73.94kBmap:93.18kBтар:78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmap:294.48kBтар:153.25kBтар:65.85kBmap:239.59kBтар :219.27kBmар:201.33kBmap:244.72kBтар :300.68kBmap:292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20 kBmap:475.61kBтар:959.66kBmap: 1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% C70 87Thu 16 Apr 12:59:59181* Unable to acce...O 88APP...
|
NULL
|
|
35617
|
NULL
|
0
|
2026-04-16T10:00:04.359950+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333604359_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"}]...
|
-1064254800051854468
|
-3662420886221275413
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
SlackFileEditViewJiminny ...DMs= Unreads@ Threads6 HuddlesDrafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMoreohannels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# support# thank-yous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya Dimitrovao Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Taneve VesR. Steliyan Georgiev3 Adelina Petrova, Ili...P.. Adelina Petrova**:AppsToastJira CloudHistoryWindowHelpQ Search Jiminny Inc& jiminny-x-integration-app8 18Q) :• Messagest Add canvasC Files* Pins@ Bookmarks38600 31 replies Last reply 10 months agoJune 5th, 2025Lukas Kovalik 1:03 PMI've also noticed that there are regular 401 errors occurring approximately every hour. I assume this might be part of your token refreshprocess. Just wanted to bring it to your attention so you can take a look.2 2 replies Last reply 10 months agoLukas Kovalik 2:31 PMIs the missing label active next to the customer something we should worry about?3 3 replies Last reply 10 months agoLukas Kovalik 4:22 PMreplied to a thread: For another client with Zoho we can't run get_users action.Guys this issue just became very urgent as we can loose a client if we don't have it fixed asap. It also seems to be quick fix, we just needto enable it somehow. Posting to channel as well.View newer renliesJune 10th, 2025Lukas Kovalik 5:00 PMHey guys, I have a quick question. Is there any caching involved when creating or modifying actions/flows on the platform?s 11 replies Last reply 10 months agoJune 11th, 2025Lukas Kovalik 4:39 PMWe need to modify the existing action or create a new one that retrieves lead by ID, even if it is converted in zoho.19 23 replies Last reply 9 months agoJune 12th, 2025~Nikolay Ivanov 2:59 PMHey everyone, we have this action https://console.integration.app/w/66fd5a6e813fde5d1b8aa505/external-apps/integrations/66fe6c913202f3a165e3c14d/actions/677fe20ae9b4b0edf5299b20we want contactld to be optional. and it's marked as non required but when we do not put in the request we can this error ""message":"required field not found","details": ["api_name": "id","json_path": "$.data[0].Who_Id.id"Đ 3 10 replies Last reply 10 months agoC< 40 Wl Ot SupportDaily-in2h A 100%C & Thu 16 Apr 13:00:03IntegrationZoho CRM|TenantShiji GroupDisconnectedDeleteJune 13th, 2025+ Latest messages10 external people are from MembraneMessage & jiminny-x-integration-appAa...
|
NULL
|
|
35742
|
NULL
|
0
|
2026-04-16T10:05:17.155015+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333917155_m1.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/connect/connect.vue...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5533032456689895920
|
-4108250601105965134
|
click
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}...
|
NULL
|
|
35743
|
NULL
|
0
|
2026-04-16T10:05:17.130326+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776333917130_m2.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/connect/connect.vue...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.03046875,"top":0.017361112,"width":0.0453125,"height":0.022222223},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.07578125,"top":0.017361112,"width":0.14960937,"height":0.022222223},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.78515625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.803125,"top":0.017361112,"width":0.09765625,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9007813,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.9140625,"top":0.017361112,"width":0.01328125,"height":0.022222223},"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.9273437,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.96015626,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9734375,"top":0.017361112,"width":0.01328125,"height":0.022222223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9867188,"top":0.017361112,"width":0.013281226,"height":0.022222223},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.403125,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.41484374,"top":0.19513889,"width":0.009375,"height":0.013194445},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.42617187,"top":0.19375,"width":0.00859375,"height":0.015972223},"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.43476564,"top":0.19375,"width":0.008203125,"height":0.015972223},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5235287424893405637
|
-9141162059177440446
|
click
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
PhpStormFileEditFV faVsco.js vProject vViewNavigateCodeLaravelRefactorToolsWindowHelp#11894 on JY-18909-automated-reports-ask-jiminny k>W testsO connect.lessV connect.vuedashboardDeallnsightserrorPagesexport-portalextension-installledinvitationvonconterenceWa VoUT• LiveCoachD LockedO login› C MeetingConsentO mobileConboard› _mocks_→ ItestsV MobileAppDownk0 Onboard.lessV Onboard vueTs useProvidersSyn‹D ondemandD playback• playlistsSettingssharedSoftphoneCoachSyglcons› _ leaminsights> M composables> M7 directives> M7 helpers> → locales> D pluginsrouterO storeServices+,o, c|v M DatabaseLEU<console S 124 m$v A jiminny@localhostL SFA HS_localY A PRODA console 10 sY d SlAGING4 console 2 s 670 ms→* Docken© ReportController.phpC TokenBuilder.php© TeamSetupController.php xphp api.php© SendReportJob.phpC AutomatedReportsCommand.phpAskJiminnykeporscontroller.ono© AutomatedReportsCommandTest.php© AutomatedReportsSendCommand.php© Team.php© AutomatedReportsRepository.php© AutomatedReportsService.php© TrackProviderInstalledEvent.phpC CreateActivityLoggedEvent.phpActivityLoagea.onp= custom.log4 console [EUl= laravel.logconsole PRODIA SF [jiminny@localhost]A console [STAGING]<SCrIOTmethods:async integrationAppOnClick() {const integrationApp = new IntegrationAppClient({token: this.crmToken,V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]AutomatedRenortscallbackService.ono© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php© AutomatedReportResult.php(C AutomatedReport.phpclass TeamSetupController extends ControllerA4 ×2 ^public function integrationAppConnect(): JsonResponse/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);const connection = awalt integrationAppnteoramonuns, Locaurrovloer.nale)openNewConnectionsnowrowereaby. Talse,dLcownuccsoleconnecclons. Talse./** @var ?SocialAccount $socialAccount */F);$socialAccount = $user->getSocialAccount($crmProviderKey);if ($socialAccount === null) {$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.','team_id' => $team->getId(),'iapR-provider' => $realProviderKey,153provider' => $crmProviderKey,]):console.log(' [IntegrationApp] openNewConnection resolved:', JSON.stringify(connection) ;if (connection && connection.disconnected === false) {try 4const saveRequest = await axios.post("aouvianceorarion-aoo-connect"return response()->isondil157if (saveRequest.data && saveRequest.data.success === true) {success → Tause.203'message' => 'Something went wrong. Social account is cannot be found.',858/** If all is good refresh the page here */window. location = "/dashboard";204return;205->setStatusCode( code:JsonResponse::HTTP_FAILED_DEPENDENCY);206207209$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);$socialAccount->save);throw new Error(saveRequest.data.message);f catch (error) {console.log(error);showsnackoar.crorcnornauzze.cror.erroro.Sthis-›logger-›info('[IntegrationApp] Social account is connected.', [teal1o s sreali-voeclo.'iepR-provider' = $realProviderKey,'provider'=> $crmProviderKey,1691711172</script>… Outouilnnn # 1695rowsvid Y! sociable_id Y15021415DD1• provider_user_id Y1695 1001806069711583162871695 17ISLHPVSk2Lk3MK6K7BbgQGEA0!O provider_user_token Yya29.a0Aa7МYirt0MShIzyiTcZHvFQaJJXsV6R7_bFDR5beR601LSmTRkt_-ERT3N-1qХDRpYmKcbLPMd6v05DLy...eVZORIOLANUAMOISLIrSZVIOIKOINCYLnONOnLUNLISTILO CLlonKCMoIMoUO LInUCUTNUOYUS04.V1AVj Support Daily • in 1h 55 mAU AutomatedReportsCommandTestv100% 145Thu 16 Apr 13:05:16CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullywIne key •uestionis wherner connection,dnsconnected === talse s acrualivthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaealttelatels eins"id"."69e0afe35890a00c8dd955b7" "name":"Zoho21607daf4623","tenantld":"69eOafd25ae490e8d05d8ca2" "isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:46:11.197Z" "L16T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6ID provider_refresh_token TeyszanLoLgAwmbawmslstnrslyLoLkninicyctwiandolgcuMedstmepzelotgvunwrnzorkLTewzUKCNDLKNy04.I expires17763361761729613615esolution rules in this tile. Error detalls: Unexpected token =. (16 minutes ago)winasur leams153:14uir-of 2 spaces...
|
NULL
|
|
35841
|
NULL
|
0
|
2026-04-16T10:10:37.838130+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334237838_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 1 new item - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-8695006771375936211
|
-3644476792552114003
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kBSupport Daily - in 1h 50 mAPP (-zsh)ec2-user@ip-10-30-...₴4DOCKER25981DEV (docker)82APP (-zsh)X3../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:10:37181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
|
35843
|
NULL
|
0
|
2026-04-16T10:10:41.339645+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334241339_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM(s hmm... maybe an issue with caching@Vlad could youVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AMDon't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMIupdareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai te ome eds ehee leuriser urteh upo. Cpl, oreate ony but trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 1.54 AMlhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply...Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction &ã connection. disconnected === false) {veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:40CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
-4799260566846765268
|
NULL
|
visual_change
|
ocr
|
NULL
|
SlackFileEditViewHistoryWindowHelpQ Search Jiminny SlackFileEditViewHistoryWindowHelpQ Search Jiminny IncJiminny ...& jiminn... & 18DMs= Unreadse) Threads6 Huddles* Drafts & sent8 DirectoriesAchivityEh External connectionsFiles# Starred8 jiminny-x-integrati...A platform-inner-teamMore= Channels# ai-chapter# alerts# backends conflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes# jiminny-bg# platform-tickets# product_launchesac random# releases# sofia-office# supportac thank-vous# the people of iimi....0 Direct messages€. Vasil Vasilev®. Galya DimitrovaC.. Nikolay Ivanov®. Aneliya Angelova(3 Aneliya Angelova, ...Stoyan Tanev 2e VesR. Steliyan Georgiev3 Adelina Petrova, Ili...(0. Adelina Petrova**:AppsToastJira Cloud• MessagesMore~pass cirrerent set or data asInolUTznes Downloae allithe first one has Due_Date butthe second one has not (edited)Lukas Kovalik 3:15 PMIs it some setting?Đ028 39 repliesFebruary 13th, 2025Lukas Kovalik 4:55 PMWe have found one moreproblem with one of [URL_WITH_CREDENTIALS] @Gui@Ryan Thank you.View newer replies10 external people are fromMembraneMessage & jiminny-x-integration-...AaThreadMaxn boptisky reo2oth. 2025 at 114y AM(s hmm... maybe an issue with caching@Vlad could youVadvs ay Ursul APP Feb 25th. 2025 at 11:52 AMDon't think we cache anything there. @Lukas Kovalik, where have you tried it?Also do you just refreshed connection or upgraded connector to the latest version as well?Lukas Kovalik Feb 25th, 2025 at 11:53 AMIupdareaCleanShot 2025-02-25 at [EMAIL] •Meladei Ai te ome eds ehee leuriser urteh upo. Cpl, oreate ony but trat dosenVlad Feb 25th. 2025 at 11:53 AM• Can you share a link to customer action you are not able to create due date?ILukas Novallk reb Zoth. 2025 at 1.54 AMlhttps://console.integration.app/w/66fd5a6e813fde5d1b8aa505/deployments/customers/67863464c2dd79e2afa939f6/actions/6788e257eaaba8cb2051ffb2Lukas Kovalik Feb 25th, 2025 at 12:02 PMdo you need some data for testing?Vladyslav Ursul APP Feb 25th, 2025 at 12:02 PM@ Ok, actually Maxim was right. We cached the schemas on Action instance and since we don'tautomatically recalculate them on connector update - you had the same issue on old actionisntanceNow it works: https://www.awesomescreenshot.com/video/36981147?key=9a514c210d37bac2e7a133c95813b10cLukas Kovalik Feb 25th, 2025 at 12:08 PMyes, seems to be working fine nowH2thanks a lot10 external people are from MembraneReply...Also send to @ jiminny-x-integration-appRODA SF [jiminny@localhost]A console [STAGING]V connect.vue XV Onboard.vueA HS_local [jiminny@localhost]ionAppOnClick() {s.crul oken.tion = await integrationAppon(this.localProvider.name)nnection({redBy: false,tipleConnections: false,'[IntegrationApp] openNewConnection resolved:', JSON.stringify(connection));ionAppl openNewConnection resolved: {9e0b41a67d0068c2ca0b48e",me":"Zoho CRM",erId": "1ece66c8-feb1-4df1-b321-21607daf4623",nantId": "69e0b3faef3e7b6248189289",Test":false,nnected":true,ate": "READY",rors": [],tegrationId":"66fe6c913202f3a165e3c14d",cernaLAppld": "06/1655e/e2d642eчe41D0ta",chuptlonkey".""eatedAt": "2026-04-16T10:04:10.420Z",datedAt": "2026-04-16T10:04:10.575Z",tryAttempts" :0,Deactivated" : falseon &ô connection.connected === true) {ction &ã connection. disconnected === false) {veRequest = await axios.post(V1 Л VSupport Daily - in 1h 50 mA100% C4Thu 16 Apr 13:10:40CascadeIntegration App ConneWhether it resolves as null/ undefined if the user closes the modalWhat the value is when OAuth completes successfullyIne key •uestionis wherner connection,dnsconnected === talse s acruallvthe right check — or if the SDK returns something like connection.connected== true (matching what you saw in the network response earlier).alaiselttalatelsleins55b7","name":"ZohoeOafd25ae490e8d05d8ca2","isTest":false,")2f3a165e3c14d" "externalAppld"."66716516T09:57:59.175Z"."retryAttempts":0,"isDeactivated":false}The object uses connected: true - there is no disconnected field at all. Sothe current check connection.disconnected == false evaluates to undefined == false → false - meaning the POST to /api/v1/integration-app-connect S nevercallled anera success connection.This is the bug. Fix it in both connect.vue and Onboard.vue:• connect.vu+1-3Now fix the same bug in Onboard. vue:Read Onboard vue #L503-517D Onboard.vue+1 -1Both files fixed. Summary of the bug:The SDK returns connected: true — there is no disconnected fieldconnection.disconnected === false was undefined === false →alwavs talse → resnevertred• Same in Onboard. vue: connection.disconnected === true was undefined === true → always talse → always snowed the error snackoarNow after openNewConnection() resolves with connected: true, the POST /api/v1/integration-app-connect will be called and the SocialAccount will beAsk anything (&*L)+ @ CodeClaude Sonnet 4.6SmTRkt_-ERT3N-1qXDRpYmKcbLPMd6v05DLy...LiTo lonKcrorwooLinuouTNovuou4.ID provider_refresh_token TeyszantolgAwmbawmslstnrssyLoLkhinicyctwiancolgcunetstmepzelotgvunwrnzorkLTewzuKcNdLKNy04.I expires17763361761729613615W Windsurf Teamsuir-of 2 spaces...
|
NULL
|
|
35970
|
NULL
|
0
|
2026-04-16T10:16:05.838442+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334565838_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB= Support Daily • in 1h 44 mAPP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:16:05181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
7205038366550356551
|
NULL
|
visual_change
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]-zsh• 28526.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB= Support Daily • in 1h 44 mAPP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $IA100% <47O 878Thu 16 Apr 13:16:05181* Unable to acce...O x886-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kBAPP...
|
NULL
|
|
35972
|
NULL
|
0
|
2026-04-16T10:16:09.576136+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334569576_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Toast
Jira Cloud...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":20,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":20,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":20,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":20,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":20,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":20,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":20,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":20,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":20,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":20,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":20,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":20,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":20,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":20,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":20,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":20,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":20,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":20,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":20,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":20,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":20,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":20,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":20,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":20,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":20,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":20,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":20,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":20,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":20,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":20,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":20,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":20,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":20,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":20,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.02578125,"height":0.0125},"role_description":"text"}]...
|
3919667287341876193
|
-1752605462192678867
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Toast
Jira Cloud
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backends contlicion-clinia# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random# releases# soha-ofhce# supportac thank-vous# the people of iimi...0 Direct messagesVasil Vasilev% Galya DimitrovaNikolay IvanovAneliva Angeloval3 Aneliva Angelova. ...Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:AppsToastJira CloudHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vJanuary Zoro.2019yJanuary 27th. 2025 vLukas Kovalik 1:44 PMWe have a few questions we'dlike to discuss. We're hoping youcan share some ideas on how toeftectively use the integrationapp. While our main tocus at themoment is on Loho CRM, werelooking tor approaches that canbe applied to any CKM we migntIntegrare in the tutureV 19A ur 36 replies Last r...January 28th. 2025 vINiKoay Malnoy ysAMHey Vlad, can u give abreakdown of the Credit APlrequests we ve made from thewhole account to Zoho?Đ 2 2 replies Last reply -...Nikolay Ivanov 10:56 AMAnother two:1. SETUP FAILED failedoccurred on 2025-01-22100 44-62. Sometimes connectionstimes out - this occurredtwo umes on Inursday lastVlad 11:07 AMreplied to a thread: Hey Vlad, ...Hey @Nikolay IVanov. Asa scussee vestcrcay we dontnave dreakaown or now manycrealts was spene on everyrequest. But we do haveexternal APl logs of all requestshere:[URL_WITH_CREDENTIALS] Kovalik looks like Zoho indeed prevents us from following normal flow as we neverget an event trom opened windowcreated a task to work on new mechanism. we will work on It soonDaniil Jun 3rd, 2025 at 7:47 PM@Lukas Kovalik tor context, we can possibly work around this by passing the connectionstatus througn our backend rather than getung it trom the authenuication window. It willnave its limitations, but is better than nothingSterKa stoyanova Jun 4th, 2025 at 9:02 AMGuys, do you nave any tests to prevent regressions. ve nave 2 trial customers wnichcomplain about zono connecton and well prodadly loose them because of it. lnisconnecton conirmadon was working derore and now customers are polnuing it is notworking which is a hit to our reputationMy question is can we relv on Integration app that changes in CRMs willl be caughtproactively or we need to have our automated tests to ensure this?Daniil Jun 4th, 2025 at 2:23 PM@Stefka Stovanova we do some connector testing, but not end-to-end OAuth flow becauseit's too flaky (companies have all sorts of anti-bot protection for log ins and it is usually notworth trying to hight it)So in this case (something is changing in the auth Ul of the external app). we don't plan testsin the foreseeable future, unfortunately.If you have an idea for how to test it automatically - let's o'Bohdan Jun 11th, 2025 at 3:53 PM@Stefka Stovanova @Lukas KovalikWe just released a fallback mechanism to support cases like Zoho aboveIt should make connection setup process more reliable and prevent this problem in thefutureLet me know it this works for youCleanShot 2025-06-11 aff14.52.24.mp4 •Connection Uil*10 2 2008s:prevents us trom tollowing normal Tlow as we neverated a task to work on new mechanism, we will workassibly werk around this by passina the connectionn getting it from the authentication window. It will1othingt rearessions? We have 2 trial customers whichwe'll probably loose them because of it. Thisbetore and now customers are pointing it is not1My question is can we rely on Integration.app thattively or we need to have our automated tests tolector testing, but not ena-to-end oauth tlowe all sons or anti-oot protection tor log ins and it isn this case (something is changing in the auth Ul ofn the foreseeable future, unfortunately.lf you have anet's discuss.Ve just released a fallback mechanism to support:onnection setup process more reliable and preventMultiple Connections for the same IntegrationGenerate transcript10 external people are from MembraneReply…Also send to jiminny-x-integration-app...
|
35971
|
|
36101
|
NULL
|
0
|
2026-04-16T10:21:30.199351+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334890199_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:30181* Unable to acce...O x8APP...
|
NULL
|
-2037393167935122502
|
NULL
|
click
|
ocr
|
NULL
|
iTerm2ShellEditViewSessionScriptsProfilesWindowHel iTerm2ShellEditViewSessionScriptsProfilesWindowHelp> 0ld6]APP (-zsh)DOCKER• 881DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...₴4../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js./public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js:/public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $I= Support Daily • in 1h 39 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgz1p:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgzip:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:21:30181* Unable to acce...O x8APP...
|
36099
|
|
36104
|
NULL
|
0
|
2026-04-16T10:21:36.099398+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776334896099_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatusRe-cofwectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll SupportDaily in1h39m A 100%C & Thu 16 Apr 13:21:35Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
NULL
|
2554194628676885569
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji FirefoxFileEoitViewHistoryToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilotfix(security): composer depender(8) JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembranesDashboard • Jiminny - Membra: X( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabBookmarksQ (EK)DashboarchExploreACUVitySettingsDoCs &ProfilesWindowHelp== console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505?element=/conneConnections / Zoho CRMDasic intooveuo41co/cuvooczcc00400NameZoho CRMAuth OptionAuth?Integration2 Zoho CRMExternal AppZoho CRMTenantDev Zoho CRM clientStatusRe-cofwectNext Credentials RefreshRefresh Credentials® Connection Logs• (• ) Connection initiated vintegrationId: 66fe6c913202f3a165e3c14dauthOptionkey:allowMultipleConnections: false• connectionInput: {account_type: ***@ connectorParameters: {IclientId: ***clientSecret: ***DisconnectC< 40 ll SupportDaily in1h39m A 100%C & Thu 16 Apr 13:21:35Ul CodeD Test@ AgentWhat would you like to do?beld• Redirecting to OAuth2 authorization server ›° Received OAuth callback ›• Processing VAuth callback• (•) Received credentials ›• Running connection test functionAPI GET: /crm/v6/users >• o Connection successful >LogoutVersion2026-04-16secrets...
|
NULL
|
|
36239
|
NULL
|
0
|
2026-04-16T10:27:05.550435+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335225550_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]APP (-zsh)₴4DOCKER981DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 1h 33 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:27:05181* Unable to acce...O 88APP...
|
NULL
|
6479452431027318410
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]APP (-zsh)₴4DOCKER981DEV (docker)82APP (-zsh)X3ec2-user@ip-10-30-...../public/vue-assets/assets/GridView-CJVxH4Dg.js./public/vue-assets/assets/ondemand-CBhkAD17.js../public/vue-assets/assets/CrmLink-rTdmxqkp.js./public/vue-assets/assets/liquor-tree-DbetBeVs.js./public/vue-assets/assets/DealRiskList-BnbcVBB8.js../public/vue-assets/assets/AskAnything-s720pn9E.js:/public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-BgVfo6PN.js../public/vue-assets/assets/deal-view-Jn4yJ9Hz.js../public/vue-assets/assets/exports-DIyAIXcT.js../public/vue-assets/assets/playlists-DpSiCNMr.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js../public/vue-assets/assets/_copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js./public/vue-assets/assets/onboard-DDojXW3c.js../public/vue-assets/assets/StatusBadge-BMn_k29a.js./public/vue-assets/assets/kiosk-nxpVorIV.js./public/vue-assets/assets/deal-insights-D5sbo4zZ.js../public/vue-assets/assets/ListView-D1HYjAvt.js../public/vue-assets/assets/_plugin-vue_export-helper-sSs0rPyg.js./public/vue-assets/assets/WelcomeLayout-B2BjjI5T.js:./public/vue-assets/assets/dashboard-CDcAQG1E.js../public/vue-assets/assets/emoji-input-D_ee3_TC.js../public/vue-assets/assets/sentry-h1XGLinV.js../public/vue-assets/assets/OrgSettingsLayout-1YAa0isa.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js../public/vue-assets/assets/playback-VJS8X-le.js./public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-CrkL2M3g.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNK0.js•/public/vue-assets/assets/live-DHZ3jGjw.js./public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saf.js../public/vue-assets/assets/index-DVKeaTSE.js../public/vue-assets/assets/logged-in-layout-B0d2IU06.js-zsh• ₴5|26.60kB26.87kB27.91kB30.75kB34.35kB39.49kB39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.05kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68 kB128.67kB129.28kB164.28 kB176.44kB180.40kB197.96kB210.96kB218.14kB264.94kB298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47kB[plugin builtin:vite-reporter](!) Some chunks are larger than 500 kBafter minification. Consider:- Using dynamic import() to code-split the application- Use build.rolldownOptions.output.codeSplittingto improve chunking: https://rolldown.rs/reference/Output0ptions.codeSplitting- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.• built in 29.74slukas@Lukas-Kovaliks-MacBook-Pro-Jiminny ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $ISupport Daily - in 1h 33 m-zshgzip:10.05kBgzip:9.38kBgz1p:10.18kBgzip:9.58kB9z1p:10.60kBgz1p:14.98kBgzip:12.70kB9z1p:12.68kBgzip:14.34kBgzip:16.46kBgzip:15.06kBgzip:13.28kBgz1p:20.08kBgzip:18.89kB9z1p:21.83kBgz1p:22.94kBgzip:22.63kB9z1p:28.17kBgzip:33.76kB9z1p:38.70 kB921p:34.16kBgzip:40.04kBgz1p:36.72kBgzip:52.24 kB9z1p:56.16kBgz1p:67.85kBgzip:61.61kB9z1p:68.66kBgz1p:64.16kB9z1p:60.30kBgzip:77.20 kBgzip:103.87kBgz1p:84.90kBgzip:97.04kBgzip: 202.81kBgz1p:72.44kBgzip: 438.06kB86-zshmaр:92.74kBmap:73.94kBmap:93.18kBтар :78.74kBтар:115.18kBmap:173.20kBтар :138.34kBтар:150.73 kBmap:150.62kBmaр:294.48kBтар:153.25kBmaр:65.85kBmap:239.59kBтар :219.27kBmар:201.39kBmap:244.72kBтар :300.68kBтар :292.79kBmap:308.10kBmaр:500.60kBтар:258.56kBmaр:410.48kBmap:266.15kBтар :831.82 kBтар:623.70kBmap:836.88kBтар :680.92kBmар :3,947.49 kBmap:1,108.20kBmap:475.61kBтар:959.66kBmap:1,245.28kBmap:849.05kBтар :792.41kBmар: 3,016.64 kBmap:436.28kBmaр: 6,282.82kB100% <47O 878Thu 16 Apr 13:27:05181* Unable to acce...O 88APP...
|
NULL
|
|
36240
|
NULL
|
0
|
2026-04-16T10:27:05.389688+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335225389_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow HelpM°QEK)DashboarcExploru UserpilotACuVitySettingsa JiminnyNew TabDoCs &a Jiminny© GoogleJiminny • Membrane( Fix an autocomplete mistake that sSymfony|Component|Debug|Excep] App "Zoho CRM" . Kavita • Membra+ New Tab• == console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantld=69e0b3faef3e7b6248189289ExploreConnectionsOverview+ Create gennectionQ Type to search |Connecting to External AppsName@ ConnectionsNo connections found.88 Integrations0, Tenants& Connectors8ó External AppsIntegration LogicS Packages@ Actions8 FlowsExternal Event* Subscriptions4 Internal Event Typesa sterarifronsWorking With Data© Data Sources8 Field Mappingsg• Internal Data Schemas/ Data Link Tablesuser intenaceO ScreensC< 40 ll O SupportDaily•in1h33m A 100%C 8 Thu 16 Apr 13:27:05Customer IS Dey cono ckM cllentXIntegrationTenantDisconnectedIDeleteLogoutVersion2026-04-16console.cermemorane.com/wbbtdose813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
NULL
|
6106597478380976273
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProfilesToolsWi FirefoxFileEoitViewHistoryBookmarksProfilesToolsWindow HelpM°QEK)DashboarcExploru UserpilotACuVitySettingsa JiminnyNew TabDoCs &a Jiminny© GoogleJiminny • Membrane( Fix an autocomplete mistake that sSymfony|Component|Debug|Excep] App "Zoho CRM" . Kavita • Membra+ New Tab• == console.getmembrane.com/w/66fd5a6e813fde5d1b8aa505/connections?tenantld=69e0b3faef3e7b6248189289ExploreConnectionsOverview+ Create gennectionQ Type to search |Connecting to External AppsName@ ConnectionsNo connections found.88 Integrations0, Tenants& Connectors8ó External AppsIntegration LogicS Packages@ Actions8 FlowsExternal Event* Subscriptions4 Internal Event Typesa sterarifronsWorking With Data© Data Sources8 Field Mappingsg• Internal Data Schemas/ Data Link Tablesuser intenaceO ScreensC< 40 ll O SupportDaily•in1h33m A 100%C 8 Thu 16 Apr 13:27:05Customer IS Dey cono ckM cllentXIntegrationTenantDisconnectedIDeleteLogoutVersion2026-04-16console.cermemorane.com/wbbtdose813fde5d1b8aa505?element=/connections/69047b425ea0b43e53f7f50b...
|
36238
|
|
36371
|
NULL
|
0
|
2026-04-16T10:32:01.922312+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335521922_m1.jpg...
|
PhpStorm
|
faVsco.js – SF [jiminny@localhost]
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5081751640215339021
|
-4009658842534132447
|
visual_change
|
hybrid
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp> 0ld6]• 0DOCKER• 881DEV (docker)882APP (-zsh)X3ec2-user@ip-10-30-…..APP (-zsh)₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copyObject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DA100% <47O 878Thu 16 Apr 13:32:01181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27 kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36366
|
|
36377
|
NULL
|
0
|
2026-04-16T10:32:27.808184+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335547808_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmj Support Daily • in 1h 28 m100% 1zThu 16 Apr 13:32:27C | 0 Inspector E Console D DebuggerN Network{) Style Editor? PerformanceO: MemoryStoragei AccessibilityÚ | Filter OutputErrors Warnings Info Logs DebugCSsXHRRequests•Nayesof the"e conpu he hash in thoxir/sPrity neto/bone sooit th CuESnF ol tTremuKrESDur CuC :Ps://fonts- 9g leapts, cen/css22fanilv=T8MPlexSerifdise sennectA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.index.mis:5:3A Storage access automatically aranted for origin "httos://ui.integration.app" on "https://app.dev.iiminnv.com"on resolved: {"id"="69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohofebl-4df1-connect-brhELsKm.15:4:2/0""createdAt":"2026-64-16117 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranes• Jiminny • Memorane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabA Stack in the worker: networkgequts teresourie: Statuo 1s/client/shared/source-map-loader /uti 1/ netvork-request - j5:43:9Resource URL:hetps.wapp.devaj.manhy.com/wue-assets/assets/conneet-brrttsxm.lssource Map unL. connect-brrtesniys map Leatt moreTop +JIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueeu) Sign in with Zoho CRM...
|
NULL
|
-3070211695849876888
|
NULL
|
visual_change
|
ocr
|
NULL
|
FirefoxFileEoitViewHistoryBookmarksProtilesToolsWi FirefoxFileEoitViewHistoryBookmarksProtilesToolsWindowHelp= app.dev.jiminny.com/connect/zohocrmj Support Daily • in 1h 28 m100% 1zThu 16 Apr 13:32:27C | 0 Inspector E Console D DebuggerN Network{) Style Editor? PerformanceO: MemoryStoragei AccessibilityÚ | Filter OutputErrors Warnings Info Logs DebugCSsXHRRequests•Nayesof the"e conpu he hash in thoxir/sPrity neto/bone sooit th CuESnF ol tTremuKrESDur CuC :Ps://fonts- 9g leapts, cen/css22fanilv=T8MPlexSerifdise sennectA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.index.mis:5:3A Storage access automatically aranted for origin "httos://ui.integration.app" on "https://app.dev.iiminnv.com"on resolved: {"id"="69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohofebl-4df1-connect-brhELsKm.15:4:2/0""createdAt":"2026-64-16117 Jiminny x Shiji - Reconnecting theZ For you - Confluence® Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Tab8 Jiminny© Google1 IntegrationAccessor Memoranes• Jiminny • Memorane( Fix an autocomplete mistake that sSymfony\Component|Debug\ExcepE App "Zoho CRM" • Kavita • Membra+ New TabA Stack in the worker: networkgequts teresourie: Statuo 1s/client/shared/source-map-loader /uti 1/ netvork-request - j5:43:9Resource URL:hetps.wapp.devaj.manhy.com/wue-assets/assets/conneet-brrttsxm.lssource Map unL. connect-brrtesniys map Leatt moreTop +JIMINNYAccount disconnectedIt looks like your Zoho CRM account has become disconnectedPlease re-connect to continueeu) Sign in with Zoho CRM...
|
36376
|
|
36483
|
NULL
|
0
|
2026-04-16T10:37:20.147648+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335840147_m2.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"}]...
|
-5560974636688646272
|
-4041954437364892597
|
visual_change
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendcontlicion-clinia# curiosity lab# engineering# frontendi#: general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi..0 Direct messagesVasil Vasilev1% Galya DimitrovaR2 Nikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVes? Stelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny Inc& jiminn... & 18MessagesMore vDecember 15th. 2025 ~ closevarunrsas vairor our rouinalin2Cohort for Self-IntegrationsRead more here: https://self-mnce.rauon.ceumemorane.comCheck out self-integrationmanifesto once in, if you'reinterested in the vision and whywe are working on this.Reply or react a l if you'reinterested - were happy towalk you through it over a verySnon: Calloday~kaс Kovaпk 11-04 AMHi guys, we have one issue weused to nave berore regardingine auinorisaion tor fono Ckv.When the clients go through allseos ane oe nrustrerumsmim Dack to tne lo2in screen.ivelleve unis is tne rererence tothe previous conversationhttps://fiminny.slack.com/archives/CO7RAC4U86M/p174895789/141717. Could you please havea look it there is any change?Lukas Kovallk1. There appears to be arecent change in thesok OAutn mecnanism.When a new clientconnects to the platformusine cono, we nelonger receive a Promise(https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewconnection)upon successtul login.This tuncuonality wasworking just a tewweeks ago.edlledThread inuminnv-x-integraton.app Jun sra. 2025 View messageED4 repies Last repyt10 external people are fromMemaraneMessage 8jiminny-x-integration-…Tihread• The link to the affected Membrane workspace (from the browser URL bar.should look like https://console.qet/<workspace-id›)• Which specific Zoho CRM connection is experiencing this issue (or a link to theconnection it possible)Lukas KovallK Today at 11:07 AMhttps://console.getmembrane.com/w/66fdba6e813fde5d1boaa505/connections?tenantld=69df632cfa483f45adcf1a2bMembrane Al Assistant APP Today at 11:08 AMThanks for sharing the workspace link! Ive set up Membrane Agent to helpInvestigate this sono CKM authorization issue.You can use Membrane Agent to diagnose what's happening with the authorizationTlOW:Open Membrane Agent to debug this issueMembrane Agent can check the authorization logs, Auth connguration, and nelpidentify what's causing the loop. If you're still experiencing issues after usingMembrane Agent. please et me know andl'l escalate to the team.Juce Agpoola APP Today at 12:30 PMI-0 Hey Lukaz,nuios:www..com.com/share/4zc//er0r331401c01200/474301eo0UI just tried version [2.3.4) and it seem to work fine so I suspect that this is a bug inthe version you are on <.2.0) please update your connector to <.3.4 at least andvaeallni* Loom Marvin jude• 30 secApp "Zoho CRM" • Kavita • Membrane - 16 April 2026 •Watch on LoomWatch LaterAdded by a bot10 external people are from MembraneAfter I updated I see there is additional option Connect via Membrane. What is thedifference comparing to OAuth 2.0 option. Also there seems to be the same issue.Previously we had the response_ Also send to jiminny-x-integration-appAaconnected• Support Daily • in 1h 23 mA]100% [2Thu 16 Apr 13:37:19U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e comu ed hash in hexpr/sPattVN5o/20w5gtt k USrP Iitru uKTCNgtqatVstps:/fonts-googleapis.com/css22fani1ETBM-PlexSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerlype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com":nNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcconnect-brhELSKM.15:2:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1ot the subresource at "https:tonts.googLeapas.com/css2/Tam1Ly=LBN+PLextseriradisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https:/app.dev.jamnny.com"-LentegractonAppyopenNewConnection resolved: {"id"="69e0b983da98fa74f98aebfb", "name"="Connection to 66fe6c913202f3a165e3c14d for Dev ZohoLny cLLemconnect-brhELSKM.15:2:2/0-16T10:33:37.196Z" "retrvAttempts":0,"isDeactivated": falsei• Nave of the "sconpu e has i expr/SrtyNtoribute Sagt6the cont5n tre Bukresog quaCVSNtBs:/fonts.9eealeapts. cm/c3322faniLy=TBMPlex-Serifsdis sennectMouservent.mozinpursource 1s deprecared. use Folnterbvent.polnterlyoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https://app.dev.iiminny.com".[IntegrationAppl openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohcwintearationiid"."66fesc013902fca165e3c14/""externalAnntd".6671653e74%/64264941h0fa"tenantId":"69e0b3faef3e7b6248189289"',"ISTest":false, "connected"; true, "state" tionkov "arohs li createdAt": *2026-04-16T10:27:15.5797" "updatedAt"."2026-04-16T10:34:08,7027" "retrvAttemots":0."isDeactivated"-falselconnect-br-tlskm.1s:2:2/6Shaso4 nashes"ncros.tonts.co0cleapis.com css<.tanily=Lbotrlextseriroaiso connectTop ÷ FBI...
|
36482
|
|
36484
|
NULL
|
0
|
2026-04-16T10:37:42.759610+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776335862759_m1.jpg...
|
Slack
|
jiminny-x-integration-app (Channel) - Jiminny Inc jiminny-x-integration-app (Channel) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Membrane
APP
Nov 11th, 2025 at 12:38:55 AM
12:38 AM
Heads up – we’re moving to a new domain and legal name!
Heads up – we’re moving to a new domain and legal name!
In the coming days and weeks, we’ll be transitioning from
integration.app
integration.app
domain to
getmembrane.com
getmembrane.com
. You’ll start seeing our website, docs, and console automatically redirect to the new domain.
No action is needed on your side — all existing APIs and SDKs will continue working as usual.
Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.
We’ll share the official launch announcement in the next couple of weeks.
1 reaction, react with +1 emoji
1
Add reaction…
Jump to date
Membrane
APP
Dec 15th, 2025 at 7:29:37 PM
7:29 PM
Exclusive access
We’ve been working on a new capability at
Membrane
called
self-integration.
Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.
We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.
For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our
Founding Cohort for Self-Integrations
.
Read more here:
https://self-integration.getmembrane.com
https://self-integration.getmembrane.com
. Check out
self-integration manifesto
once in, if you’re interested in the vision and why we are working on this.
Reply or react a
if you’re interested
— we’re happy to walk you through it over a very short call.
Jump to date
Lukas Kovalik
Today at 11:04:11 AM
11:04 AM
Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
. Could you please have a look if there is any change?
Remove preview
Lukas Kovalik
Lukas Kovalik
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful login. This functionality was working just a few weeks ago.
(edited)
Thread in jiminny-x-integration-app
Thread in
jiminny-x-integration-app
|
Jun 3rd, 2025
Jun 3rd, 2025
|
View message
View message
4 replies
Last reply today at 12:30 PM
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
10 external people
are from
Membrane...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"More","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Nov 11th, 2025 at 12:38:55 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:38 AM","depth":25,"role_description":"text"},{"role":"AXHeading","text":"Heads up – we’re moving to a new domain and legal name!","depth":24,"role_description":"heading"},{"role":"AXStaticText","text":"Heads up – we’re moving to a new domain and legal name!","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"In the coming days and weeks, we’ll be transitioning from","depth":24,"role_description":"text"},{"role":"AXLink","text":"integration.app","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"integration.app","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"domain to","depth":24,"role_description":"text"},{"role":"AXLink","text":"getmembrane.com","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"getmembrane.com","depth":25,"role_description":"text"},{"role":"AXStaticText","text":". You’ll start seeing our website, docs, and console automatically redirect to the new domain.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"No action is needed on your side — all existing APIs and SDKs will continue working as usual.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’ll share the official launch announcement in the next couple of weeks.","depth":24,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with +1 emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Membrane","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"APP","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Dec 15th, 2025 at 7:29:37 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:29 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Exclusive access","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’ve been working on a new capability at","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"called","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"self-integration.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Founding Cohort for Self-Integrations","depth":24,"role_description":"text"},{"role":"AXStaticText","text":".","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Read more here:","depth":24,"role_description":"text"},{"role":"AXLink","text":"https://self-integration.getmembrane.com","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://self-integration.getmembrane.com","depth":25,"role_description":"text"},{"role":"AXStaticText","text":". Check out","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"self-integration manifesto","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"once in, if you’re interested in the vision and why we are working on this.","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"Reply or react a","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"if you’re interested","depth":24,"role_description":"text"},{"role":"AXStaticText","text":"— we’re happy to walk you through it over a very short call.","depth":24,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Today at 11:04:11 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:04 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919","depth":26,"role_description":"text"},{"role":"AXStaticText","text":". Could you please have a look if there is any change?","depth":25,"role_description":"text"},{"role":"AXButton","text":"Remove preview","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Lukas Kovalik","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (","depth":27,"role_description":"text"},{"role":"AXLink","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection","depth":28,"role_description":"text"},{"role":"AXStaticText","text":") upon successful login. This functionality was working just a few weeks ago.","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"(edited)","depth":26,"role_description":"text"},{"role":"AXLink","text":"Thread in jiminny-x-integration-app","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Thread in","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXLink","text":"Jun 3rd, 2025","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jun 3rd, 2025","depth":27,"role_description":"text"},{"role":"AXStaticText","text":"|","depth":26,"role_description":"text"},{"role":"AXLink","text":"View message","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"View message","depth":27,"role_description":"text"},{"role":"AXButton","text":"4 replies","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Last reply today at 12:30 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"View thread","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply to thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Summarize thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"10 external people","depth":22,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"are from","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Membrane","depth":22,"role_description":"text"},{"role":"AXTextArea","text":"","depth":23,"value":"","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
2620602271329201090
|
-3640820248560732084
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
More
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Membrane
APP
Nov 11th, 2025 at 12:38:55 AM
12:38 AM
Heads up – we’re moving to a new domain and legal name!
Heads up – we’re moving to a new domain and legal name!
In the coming days and weeks, we’ll be transitioning from
integration.app
integration.app
domain to
getmembrane.com
getmembrane.com
. You’ll start seeing our website, docs, and console automatically redirect to the new domain.
No action is needed on your side — all existing APIs and SDKs will continue working as usual.
Additionally, we have changed our legal name to Membrane Inc. It will be used in all the paperwork going forward.
We’ll share the official launch announcement in the next couple of weeks.
1 reaction, react with +1 emoji
1
Add reaction…
Jump to date
Membrane
APP
Dec 15th, 2025 at 7:29:37 PM
7:29 PM
Exclusive access
We’ve been working on a new capability at
Membrane
called
self-integration.
Instead of relying on pre-built integrations, your AI agent can now build integrations itself, on the fly, to any app.
We’re partnering with a small group of teams to pilot this, including our customers. If it sounds relevant to what you’re building, I’d love to include you.
For now, this is a closed experience as we want to refine the end-to-end flow with close partners as part of our
Founding Cohort for Self-Integrations
.
Read more here:
https://self-integration.getmembrane.com
https://self-integration.getmembrane.com
. Check out
self-integration manifesto
once in, if you’re interested in the vision and why we are working on this.
Reply or react a
if you’re interested
— we’re happy to walk you through it over a very short call.
Jump to date
Lukas Kovalik
Today at 11:04:11 AM
11:04 AM
Hi guys, we have one issue we used to have before regarding the authorisation for Zoho CRM. When the clients go through all steps and login it just returns him back to the login screen. I believe this is the reference to the previous conversation
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
https://jiminny.slack.com/archives/C07RAC4U86M/p1748957897141919
. Could you please have a look if there is any change?
Remove preview
Lukas Kovalik
Lukas Kovalik
There appears to be a recent change in the SDK OAuth mechanism. When a new client connects to the platform using Zoho, we no longer receive a Promise (
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
https://console.integration.app/ref/sdk/classes/IntegrationAccessor.html#openNewConnection
) upon successful login. This functionality was working just a few weeks ago.
(edited)
Thread in jiminny-x-integration-app
Thread in
jiminny-x-integration-app
|
Jun 3rd, 2025
Jun 3rd, 2025
|
View message
View message
4 replies
Last reply today at 12:30 PM
View thread
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply to thread
Forward message…
Save for later
Summarize thread
More actions
10 external people
are from
Membrane
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6l• 0DOCKER• 881DEV (docker)882APP (-zsh)[EMAIL] (-zsh)₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DSupport Daily • in 1h 23 m-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kB921p:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB86-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KB100% <47O 878Thu 16 Apr 13:37:42181* Unable to acce...O x8APP...
|
NULL
|
|
36530
|
NULL
|
0
|
2026-04-16T10:42:52.340996+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336172340_m1.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 8th at 7:34:36 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:34 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:16 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, привет","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:19 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11928","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11928","depth":26,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"role_description":"text"}]...
|
-1479863479575023321
|
-4079286226499166964
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(ahl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copyObject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• 28539.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $DБГ100% <47O 878Thu 16 Apr 13:42:51181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36528
|
|
36531
|
NULL
|
0
|
2026-04-16T10:42:52.359491+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336172359_m2.jpg...
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 2 new items - S Vasil Vasilev (DM) - Jiminny Inc - 2 new items - Slack...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"bounds":{"left":0.00546875,"top":0.05486111,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"bounds":{"left":0.00546875,"top":0.09097222,"width":0.0125,"height":0.022222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"bounds":{"left":0.00546875,"top":0.12708333,"width":0.0125,"height":0.022222223},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"bounds":{"left":0.026953125,"top":0.048611112,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"bounds":{"left":0.03125,"top":0.08125,"width":0.012109375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"bounds":{"left":0.026953125,"top":0.09583333,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"bounds":{"left":0.032421876,"top":0.12847222,"width":0.009765625,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"bounds":{"left":0.026953125,"top":0.14305556,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"bounds":{"left":0.0296875,"top":0.17569445,"width":0.015234375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"bounds":{"left":0.026953125,"top":0.19027779,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"bounds":{"left":0.0328125,"top":0.22291666,"width":0.008984375,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"bounds":{"left":0.026953125,"top":0.2375,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"bounds":{"left":0.03203125,"top":0.2701389,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"bounds":{"left":0.026953125,"top":0.2847222,"width":0.020703126,"height":0.047222223},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"bounds":{"left":0.03203125,"top":0.31736112,"width":0.010546875,"height":0.009027778},"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":20,"bounds":{"left":0.06679688,"top":0.0875,"width":0.022265624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":20,"bounds":{"left":0.06679688,"top":0.10694444,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":20,"bounds":{"left":0.06679688,"top":0.12638889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":20,"bounds":{"left":0.06679688,"top":0.14583333,"width":0.034375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":20,"bounds":{"left":0.06679688,"top":0.16527778,"width":0.028515626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":22,"bounds":{"left":0.07304688,"top":0.24722221,"width":0.0515625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":22,"bounds":{"left":0.07304688,"top":0.26666668,"width":0.05234375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":22,"bounds":{"left":0.07304688,"top":0.3125,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":22,"bounds":{"left":0.07304688,"top":0.33194444,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":22,"bounds":{"left":0.07304688,"top":0.3513889,"width":0.021484375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":22,"bounds":{"left":0.07304688,"top":0.37083334,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":22,"bounds":{"left":0.07304688,"top":0.39027777,"width":0.032421876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":22,"bounds":{"left":0.07304688,"top":0.4097222,"width":0.03046875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":22,"bounds":{"left":0.07304688,"top":0.42916667,"width":0.02265625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"general","depth":22,"bounds":{"left":0.07304688,"top":0.4486111,"width":0.019140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":22,"bounds":{"left":0.07304688,"top":0.46805555,"width":0.034765624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":22,"bounds":{"left":0.07304688,"top":0.4875,"width":0.02734375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":22,"bounds":{"left":0.07304688,"top":0.5069444,"width":0.041015625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":22,"bounds":{"left":0.07304688,"top":0.5263889,"width":0.0453125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"random","depth":22,"bounds":{"left":0.07304688,"top":0.54583335,"width":0.019921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":22,"bounds":{"left":0.07304688,"top":0.56527776,"width":0.020703126,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":22,"bounds":{"left":0.07304688,"top":0.5847222,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"support","depth":22,"bounds":{"left":0.07304688,"top":0.6041667,"width":0.0203125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":22,"bounds":{"left":0.07304688,"top":0.6236111,"width":0.02890625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":22,"bounds":{"left":0.07304688,"top":0.64305556,"width":0.053125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":22,"bounds":{"left":0.07304688,"top":0.6888889,"width":0.03125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":22,"bounds":{"left":0.07304688,"top":0.7083333,"width":0.04140625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":22,"bounds":{"left":0.07304688,"top":0.7277778,"width":0.037890624,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.74722224,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":22,"bounds":{"left":0.07304688,"top":0.76666665,"width":0.044140626,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11679687,"top":0.76666665,"width":0.0078125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":22,"bounds":{"left":0.11992188,"top":0.76666665,"width":0.016796876,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.78194445,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":22,"bounds":{"left":0.07304688,"top":0.7861111,"width":0.033984374,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":22,"bounds":{"left":0.07304688,"top":0.8055556,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.07304688,"top":0.825,"width":0.044921875,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.84444445,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.11328125,"top":0.84444445,"width":0.003125,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":22,"bounds":{"left":0.11601563,"top":0.84444445,"width":0.009375,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":",","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":22,"bounds":{"left":0.13632813,"top":0.8597222,"width":0.000390625,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":22,"bounds":{"left":0.07304688,"top":0.86388886,"width":0.040625,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":22,"bounds":{"left":0.07304688,"top":0.9097222,"width":0.026171874,"height":0.0125},"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":22,"bounds":{"left":0.07304688,"top":0.9291667,"width":0.014453125,"height":0.0125},"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"bounds":{"left":0.14335938,"top":0.07986111,"width":0.036328126,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"bounds":{"left":0.15429688,"top":0.0875,"width":0.022265624,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"bounds":{"left":0.18085937,"top":0.07986111,"width":0.040234376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"bounds":{"left":0.19179687,"top":0.0875,"width":0.026171874,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"bounds":{"left":0.22226563,"top":0.07986111,"width":0.024609376,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"bounds":{"left":0.23320313,"top":0.0875,"width":0.010546875,"height":0.011111111},"role_description":"text"},{"role":"AXRadioButton","text":"Pins","depth":17,"bounds":{"left":0.24804688,"top":0.07986111,"width":0.02421875,"height":0.02638889},"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Pins","depth":19,"bounds":{"left":0.2589844,"top":0.0875,"width":0.01015625,"height":0.011111111},"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"bounds":{"left":0.2734375,"top":0.07986111,"width":0.012890625,"height":0.02638889},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"bounds":{"left":0.13671875,"top":0.045138888,"width":0.01640625,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 8th at 7:34:36 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"7:34 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.028125,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.10069445,"width":0.059375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:16 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш, привет","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.03984375,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:19 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11928","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11928","depth":26,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:25 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"трябва ми един approve, моля","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.08125,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:08:35 PM","depth":25,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:08","depth":26,"bounds":{"left":0.146875,"top":0.10069445,"width":0.012109375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"правя fine tuning на настойките за синхронизация на мейли","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.1609375,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.036328126,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19804688,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:24 PM","depth":24,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.20117188,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"готово","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 9th at 12:11:50 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"12:11 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.020703126,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"благодаря","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.028125,"height":0.00069444446},"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"bounds":{"left":0.2878906,"top":0.10069445,"width":0.059375,"height":0.00069444446},"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Vasil Vasilev","depth":24,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.032421876,"height":0.00069444446},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"bounds":{"left":0.19414063,"top":0.10069445,"width":0.003515625,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:40 PM","depth":24,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01 PM","depth":25,"bounds":{"left":0.19726562,"top":0.10069445,"width":0.01796875,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"Лукаш привет","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.038671874,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"Apr 14th at 2:01:49 PM","depth":25,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:01","depth":26,"bounds":{"left":0.14960937,"top":0.10069445,"width":0.009375,"height":0.00069444446},"role_description":"text"},{"role":"AXStaticText","text":"може ли да разглдаш този ПР като имаш малко време:","depth":25,"bounds":{"left":0.16210938,"top":0.10069445,"width":0.15117188,"height":0.00069444446},"role_description":"text"},{"role":"AXLink","text":"https://github.com/jiminny/app/pull/11949","depth":25,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://github.com/jiminny/app/pull/11949","depth":26,"bounds":{"left":0.31289062,"top":0.10069445,"width":0.111328125,"height":0.00069444446},"role_description":"text"}]...
|
-3474151922635054558
|
-4079145489015274227
|
click
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Stoyan Tanev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Pins
Pins
Add and Edit Channel Tabs
Canvas
List
Folder
Vasil Vasilev
Apr 8th at 7:34:36 PM
7:34 PM
благодаря
Jump to date
Vasil Vasilev
Apr 9th at 12:08:16 PM
12:08 PM
Лукаш, привет
Apr 9th at 12:08:19 PM
12:08
https://github.com/jiminny/app/pull/11928
https://github.com/jiminny/app/pull/11928
Apr 9th at 12:08:25 PM
12:08
трябва ми един approve, моля
Apr 9th at 12:08:35 PM
12:08
правя fine tuning на настойките за синхронизация на мейли
Lukas Kovalik
Apr 9th at 12:11:24 PM
12:11 PM
готово
Vasil Vasilev
Apr 9th at 12:11:50 PM
12:11 PM
благодаря
Jump to date
Vasil Vasilev
Apr 14th at 2:01:40 PM
2:01 PM
Лукаш привет
Apr 14th at 2:01:49 PM
2:01
може ли да разглдаш този ПР като имаш малко време:
https://github.com/jiminny/app/pull/11949
https://github.com/jiminny/app/pull/11949
SackFileFoitViewJiminny ...= Unreadse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# sofa-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili...Adelina Petrova**:Apps' Jira CloudToastHistoryWindowHelpSearch Jiminny IncE. Vasil VasilevQMessagestP Add canvas4e FilesPinsvasll vastiey 4ido rimмерсине е спешнопросто искам да го разкарам, за да си отпуша следващия РLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя lIP code style, и typehints•в следващия вече има логикаLukas Kovalik 3:21 PMза stage ce зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage кaтo crm syncable objectYesterdayVasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти, който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още сьществува в CRM-ав момента таргетира leads основнослед това ще пусна един ПР, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеІБОМЯтToday "vasil vasilev 11.50 AMJvka ulr nloy Beiihttps://github.com/iiminnv/app/pull/11977даи един оърз approveLuKas KovallK 12:00 PMдОТОВОwasill vasillev 12:00 PMмедсиLukas Kovalk 12.00 PMи лвата вчеда оях в почивкаvasil vasilev 1:00 PMа, извиниваи, не знасхLukas Kovalk 1201 PMHama noooлemВаско ако имаш минутка, удин брьз въпрос покрай integration-appAaconnectediShift + Return to add a new lineSupport Daily • in 1h 18 mБг100% C2Thu 16 Apr 13:42:52U InspectonConsoleDebuggerT- Network Style Editor( PerformanceLF Memory& StorageT Accessibility040filter OutourLogs DebugessXHRRequests• Naye a the "e compu ed hash in hexpr/sPattVN5o/20w58gtt USrP Iitru sukreNgquatVtps:/fonts-googleapis.com/css22fani1TBM-PlextSeriffdis sonnectA MouseEvent.mozInputSource is deprecated. Use PointerEvent.pointerlype instead.Storage access automaticaluy aranted for orioin "nttos:ul, inteoration.aop" on "https:apo, dev. 11minnv. com"ope aeconee-teb -esoled: ("Sd" 59e0b983dag8ta74F98aebfbi, " nane'""Connection to 66fe6(91520273a165e3c14l for Dev Z0hconnect-brhELsKm.15:4:2/0"oauth" "createdAt":"2026-64-1611A Source map error: Error: request failed with status 404Stack in the worker:networkkeauestaresource.devtools/cl1ent/shared/source-mad-loader/utils/network=reauest..1s:45:9Resource URL: https://app.dev.jiminny.com/vue=assets/assets/connect-BFFtIsKm.issource Map unL. connect-brrtesniys map Lealt moreLayesoa". The computed hes is "oxpr/sPifeVoNx50/1ot the subresource at "https:tonts.googLeapas.com/css2/Tam1Ly=1BN+PLextseriTadisp conneciA MouseEvent.mozInputSource is deprecated. Use PointerEvent-pointerType instead.& Storage access automatically granted tor origan "https:/ul, integration.app" on "https:/app.dev.11m1nny-com" -openNewConnection resolved: {"id":"69e0b983da98fa74f98aebfb", "name":"Connection to 66fe6c913202f3a165e3c14d for Dev Zohoconnect-brhELSKM.15:2:2/0Lny cLLeme":"READY", "errors":proxy" "createdAt" : "2026-04-16T10:27:15.579Z-16T10:33:37.1962" "retryAttempts":0,"isDeactivated": falsel! None of the "chaß84" hashes in the integritv attribute match the content of the subrecource atLay=swap". The computed hash is "oxpr/SPifeVqNx50/1ow9nS0QIt60XJIKkUcSrPclwH/ruMEWK7C1JNq1qUMCVSN™. deetteeeeee eMouservent.mozinpursource 1s deprecared. use Forntertvent.polhterlvoe instead.A Storage access automatically granted for origin "https://ui.integration.app" on "https://app.dev.jiminny.com"-Ctn etrenton Userqae- eCebef-1ob-edolved: ("":69e0b983da98fa7At98aebfb"', "hane" "Connection to 66fe6e91320273165e3c14d for Dev Zohoconnect-br-tlskm.1s:2:27/6132-ntegrationta m6te6C91 273a5e33e752481erna9,Tet Aae,2d6tzetedorae"tenantId","69e0b3faef3e7b6248189289","isTest" false, "connected" true, "state" "READY "errors"icrentedf+i. 19075-PA-16T10:27:15.5797" "updatedAt"."2026-04-16T10:34:08,7027" "retrvAttemots":0."isDeactivated"-falselNove ve the "e compu ha has i hoxpr/SPrtev 0/3owenabtt XKUSrP oTre sukrCaNg quat s."ncros.ronts.co0cleapis.com css<.tanlly=Lbotrlextserltoulso connectTop ÷ FBI...
|
36529
|
|
36602
|
NULL
|
0
|
2026-04-16T10:48:02.514088+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336482514_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 13:48:02181* Unable to acce...O x886-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBтар:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
NULL
|
-3723815977769018164
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelp(abl• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 13:48:02181* Unable to acce...O x886-zshmap:138.34kBmaр:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBтар:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36601
|
|
36603
|
NULL
|
0
|
2026-04-16T10:48:02.495951+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336482495_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
SackFileFoitViewHistoryWindowHelpSearch Jiminny In SackFileFoitViewHistoryWindowHelpSearch Jiminny IncJiminny ...E. Vasil VasilevQ= UnreadsMessagestP Add canvas4e FilesPinse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova**:Apps' Jira CloudLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя ПР code style, и typehintsв следващий вече има лошикаLukas Kovalik 3:21 PMза stage се зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable obiectYesterday ~Vasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти. който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още съществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTlodayyvasil Vasilev 11:56 AMvkaш. пoиветhttps://github.com/iiminnv/app/oull/11977даи един оърз approvelLukas Kovalk 17.00 PMCOTOROwasill vasillev 12:00 PMмедсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаwasill vasillev 12:00 PMа, извиняваи, не знаехLukas Kovalk 1201 PMняма поорлемLukas Kovalk 1:42 PMваско ако имаш минутка, имам един орьз въпрос покрай Integranon-appvasil vasilev 1:43 PM• мин самоToastMessage Vasil VasilevAaconnecteda Support Daily • in 1h 12 m(A]100% zThu 16 Apr 13:48:02U Inspecton• Console• DebuggerT_ NetworkL Style EditorPertormanceFilter URLs204 0,206 Go204 0..200 P..204 о.200 G.204 O..200 G.204 O..200 P...2940.200 G.204 0200 G.200 P..204 O..204 0200 G..204 о..206TG.204 0..200 р.204 0,200 G.204 O..200 G.200 P.204 01204 0.200 G.206G.200 P...294 0..204 O..204 0200 G.204 о..200 G..200 P..294 0.204 о..206TG.204 0..200 G.204 0.200 P.2041011200 G.1204 0.200 G.2940.200 P.204 0Domaln"api.get….colf-auth-contowhapioet.. zohocrm^api.get…zohocrmapi.get.• api.get...aoi.cet..connection-optionsconnection-ontionsapi.get...aoi.cet..self-auth-contextzonocrmzohoermapi.get..."api.get.api.get... connection-options*api.get..self-auth-contextapi.get…self-auth-context• api.get..api.get.api.get...aoi.cet..zonoermconnection-optionszohocrmconnection-ootions• api.get...A api.getself-auth-contextselt-auth-contexyapi.get... zohocrm*api.get...zahacrmadiaet..*api.get...api.get…api.get.aoi.cet..connection-optionsconnection-optionsself-auth-contextzonocrmconnection-ontions• api.get...• api.get.api.get...connection-options*api.get..self-auth-contextadi,det..• api.get.api.get… api.get.api.get…zohocrmzohocrm• api.get..^ api.get..api.get...^ api.get….self-auth-contextselt-auch-contexuzohoermconnection-optionsapi.get...*api.get..adiaet..zohocrmconnection"ootions*api.get..api.get.• api.get...aoi.cet..self-auth-conteytzohocrmapi.get...aoi.cet..connection-ontionsselt-auth-contextaapiaet...self-auth-context"api.get.zonocrmadi,det..zohocrm*api.get..connection"ootionsapi.get…connection-optionsInitiatorTransf…xhr740 B 0index-.1RS KBxhr767B 0index-...1.09 kB 5774B 0index-...1.92 kB 3744B0Index-.1.74 kB 2769B01.09 kB 518080тeex"..1.92 kB 3146B0moex"index-...1.73 kB 21.10 kB 5761B0774B0index-192 kB 3748 B 0index-...114 KB759B 0index-..109 K815780B 0index-..xhr1.92 kB 3746B01.74 kB 2index-109 kRI;761 B 078480index-.indexe.1.92 kB 3174 kB 21.09 kB 5744B 0761B 0774B0moex"199 kR748 B 0index-.index-.1.74 KB 21.10 kB 5index-..xhrindex-.maex".780B 019 KB740 B 01.74 kB 2763B01.09 KD766 R101.92 kB 3744B01.74 kB 2757 B01.10 kB 5114B91 requests92.01 KB/ 112.19 KB transterredFinish: 13.38 minLF Memory& StorageT AccessibilityAlI HITMLessFontsmages Vedia ws_ Disable Cache No Throttling + 50:LookIesRequestResponseTiminesolack llaceSecuritymeddersFilter propertiesJSON1c: "botebc91sz021salboesc140"name: "Zoho CRM"uuid: "e0259861-2f23-4f88-8fa8-8d9f9d420f89"kev: "zohoerm"state. "pEAnyerrors:revision: "8d27bda5-8eca-46d9-90bd-70f98efd970d"creaTeoAl. "2024-10-0311000.095114uocatedAt:"2026-04-16704419464sueacuivateu: laiselocoun: "nuos:/statc.intecration.apo/connectors/zono-crm/loco.ongconnector d:"64a158e7626057200232e076connectorVersion: "3.0.3"oAuthCallbackUri: "https:api.integration.app/oauth-callbackhasMissingParameters: falsenasbocumentation: Talsehaso perations: trueoperationsCount: 569nasbara: truedataCollectionsCount: 20hasEvents: falseeventsCount:hasGlobalWebhooks: falsenasuam: trueauth voe: "client-credentials"• connection: {id: "69e0b983da98fa74f98aebfb", name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRMcllent, userlo: "Teceboco-Ted1-401l-0321-2100/0a14023.id: "69e0b983ca98fa74f98aebfo"name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client"userld: "leceb6c8-teb1-4d11-b321-2160/dat4623tenantid: "60e0hctaef3e706948120280Istest. talseconnected: truestate: "READY"errors:intearationid: "66te6c913202f3a165e3c14d1externalAppid: "6671653e7e2d642e4e41b0fa"authoptionkey: "oauth"createdAt:"2026-04-1611007 15.5707updatedAt: "2026-04-16T10:34:08.7022'retrvAttemots: 0isDeactivated: falseauthoptions: ? .?...
|
NULL
|
7559075226520756074
|
NULL
|
click
|
ocr
|
NULL
|
SackFileFoitViewHistoryWindowHelpSearch Jiminny In SackFileFoitViewHistoryWindowHelpSearch Jiminny IncJiminny ...E. Vasil VasilevQ= UnreadsMessagestP Add canvas4e FilesPinse) ThreadsDMs6d Huddles• Drafts & sent8 DirectoriesAchivityEh External connectionsFiles* Starred@ iminny-x-integrati..platform-inner-team(# Channels# ai-chaptenMore# alerts# backendconflicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platform-tickets#: product launchesac random# releases# soha-ofhce#: supportac thank-vous# the people of iimi....0 Direct messagesg Vasil Vasilev1% Galya DimitrovaNikolay Ivanov- Aneliva Angeloval3 Aneliva Angelova. ..Stoyan Tanev CVesStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova**:Apps' Jira CloudLukas Kovalik 3:21 PMготово, беше по-бързо отколкото мислехVasil Vasilev 3:21 PMмерсиаз основно съм оправял в тоя ПР code style, и typehintsв следващий вече има лошикаLukas Kovalik 3:21 PMза stage се зачудих дали не е лошо да добавимVasil Vasilev 3:23 PMкое да добавим ?Lukas Kovalik 3:29 PMstage Kato crm syncable obiectYesterday ~Vasil Vasilev 5:56 PMЛукаш, приветутре ако имаш време, хвърли моля те едно око на тоя PR: https://github.com/iminny/app/pull/11879почиства стари stale crm обекти. който мачваме в локалната базапоинцитана оаоотие ско ооекне е ьплеитван о месеша. но по мачнем по мейд.или телесон. прооваме да направимедин sink, за да видим дали все още съществува в CRM-aвмoveric iaeicmoa caos оc-овнoслед това ще пусна един шіг, дето почиства и tasks / events, че и там имаме стари асоциации, дето от време на времеьOМЯTTlodayyvasil Vasilev 11:56 AMvkaш. пoиветhttps://github.com/iiminnv/app/oull/11977даи един оърз approvelLukas Kovalk 17.00 PMCOTOROwasill vasillev 12:00 PMмедсиlLukas Kovalk 17.00 PMи лвата вчеда оях в почивкаwasill vasillev 12:00 PMа, извиняваи, не знаехLukas Kovalk 1201 PMняма поорлемLukas Kovalk 1:42 PMваско ако имаш минутка, имам един орьз въпрос покрай Integranon-appvasil vasilev 1:43 PM• мин самоToastMessage Vasil VasilevAaconnecteda Support Daily • in 1h 12 m(A]100% zThu 16 Apr 13:48:02U Inspecton• Console• DebuggerT_ NetworkL Style EditorPertormanceFilter URLs204 0,206 Go204 0..200 P..204 о.200 G.204 O..200 G.204 O..200 P...2940.200 G.204 0200 G.200 P..204 O..204 0200 G..204 о..206TG.204 0..200 р.204 0,200 G.204 O..200 G.200 P.204 01204 0.200 G.206G.200 P...294 0..204 O..204 0200 G.204 о..200 G..200 P..294 0.204 о..206TG.204 0..200 G.204 0.200 P.2041011200 G.1204 0.200 G.2940.200 P.204 0Domaln"api.get….colf-auth-contowhapioet.. zohocrm^api.get…zohocrmapi.get.• api.get...aoi.cet..connection-optionsconnection-ontionsapi.get...aoi.cet..self-auth-contextzonocrmzohoermapi.get..."api.get.api.get... connection-options*api.get..self-auth-contextapi.get…self-auth-context• api.get..api.get.api.get...aoi.cet..zonoermconnection-optionszohocrmconnection-ootions• api.get...A api.getself-auth-contextselt-auth-contexyapi.get... zohocrm*api.get...zahacrmadiaet..*api.get...api.get…api.get.aoi.cet..connection-optionsconnection-optionsself-auth-contextzonocrmconnection-ontions• api.get...• api.get.api.get...connection-options*api.get..self-auth-contextadi,det..• api.get.api.get… api.get.api.get…zohocrmzohocrm• api.get..^ api.get..api.get...^ api.get….self-auth-contextselt-auch-contexuzohoermconnection-optionsapi.get...*api.get..adiaet..zohocrmconnection"ootions*api.get..api.get.• api.get...aoi.cet..self-auth-conteytzohocrmapi.get...aoi.cet..connection-ontionsselt-auth-contextaapiaet...self-auth-context"api.get.zonocrmadi,det..zohocrm*api.get..connection"ootionsapi.get…connection-optionsInitiatorTransf…xhr740 B 0index-.1RS KBxhr767B 0index-...1.09 kB 5774B 0index-...1.92 kB 3744B0Index-.1.74 kB 2769B01.09 kB 518080тeex"..1.92 kB 3146B0moex"index-...1.73 kB 21.10 kB 5761B0774B0index-192 kB 3748 B 0index-...114 KB759B 0index-..109 K815780B 0index-..xhr1.92 kB 3746B01.74 kB 2index-109 kRI;761 B 078480index-.indexe.1.92 kB 3174 kB 21.09 kB 5744B 0761B 0774B0moex"199 kR748 B 0index-.index-.1.74 KB 21.10 kB 5index-..xhrindex-.maex".780B 019 KB740 B 01.74 kB 2763B01.09 KD766 R101.92 kB 3744B01.74 kB 2757 B01.10 kB 5114B91 requests92.01 KB/ 112.19 KB transterredFinish: 13.38 minLF Memory& StorageT AccessibilityAlI HITMLessFontsmages Vedia ws_ Disable Cache No Throttling + 50:LookIesRequestResponseTiminesolack llaceSecuritymeddersFilter propertiesJSON1c: "botebc91sz021salboesc140"name: "Zoho CRM"uuid: "e0259861-2f23-4f88-8fa8-8d9f9d420f89"kev: "zohoerm"state. "pEAnyerrors:revision: "8d27bda5-8eca-46d9-90bd-70f98efd970d"creaTeoAl. "2024-10-0311000.095114uocatedAt:"2026-04-16704419464sueacuivateu: laiselocoun: "nuos:/statc.intecration.apo/connectors/zono-crm/loco.ongconnector d:"64a158e7626057200232e076connectorVersion: "3.0.3"oAuthCallbackUri: "https:api.integration.app/oauth-callbackhasMissingParameters: falsenasbocumentation: Talsehaso perations: trueoperationsCount: 569nasbara: truedataCollectionsCount: 20hasEvents: falseeventsCount:hasGlobalWebhooks: falsenasuam: trueauth voe: "client-credentials"• connection: {id: "69e0b983da98fa74f98aebfb", name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRMcllent, userlo: "Teceboco-Ted1-401l-0321-2100/0a14023.id: "69e0b983ca98fa74f98aebfo"name: "Connection to 66fe6c913202f3a165e3c14d for Dev Zoho CRM client"userld: "leceb6c8-teb1-4d11-b321-2160/dat4623tenantid: "60e0hctaef3e706948120280Istest. talseconnected: truestate: "READY"errors:intearationid: "66te6c913202f3a165e3c14d1externalAppid: "6671653e7e2d642e4e41b0fa"authoptionkey: "oauth"createdAt:"2026-04-1611007 15.5707updatedAt: "2026-04-16T10:34:08.7022'retrvAttemots: 0isDeactivated: falseauthoptions: ? .?...
|
36600
|
|
36689
|
NULL
|
0
|
2026-04-16T10:53:30.893458+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336810893_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k v§ Support Daily - in 1h 7 mL AutomatedReportsCommandTestv100% C8• Thu 16 Apr 13:53:30QProject v© ReportController.phpTokenBuilder.php= custom.log=laravel.log4 SF [jiminny@localhost]Vconnect.vue X18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› MeetingConsent› C mobile• D onboard› DJ_mocks_› _tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› OJ shared› SoftphoneCoach› C Svgicons› D Teaminsights> C composablesdirectiveshelpers> O locales© TeamSetupController.php xapi.phpSendReportJob.phpV© AutomatedReportsCommand.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpectr182195'team_id'=> $team->getId(),183196'iapp_provider' => SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json(l189202'success' => false,— 190203191Onboard.vue4 HS_local (jiminny@localhost]A console (EU]& console (PROD]& console [STAGING]<script>Wmethods: (async integrationApp0nClick) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection && connection.discfnnected === false) {try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));}Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars)UTF-8Co 2 spaces...
|
NULL
|
-1891275783984454477
|
NULL
|
click
|
ocr
|
NULL
|
PhpStormFileEditViewNavigateCode LaravelRefactorRu PhpStormFileEditViewNavigateCode LaravelRefactorRunToolsGitWindowHelpFV faVsco.jsv#11894 on JY-18909-automated-reports-ask-jiminny k v§ Support Daily - in 1h 7 mL AutomatedReportsCommandTestv100% C8• Thu 16 Apr 13:53:30QProject v© ReportController.phpTokenBuilder.php= custom.log=laravel.log4 SF [jiminny@localhost]Vconnect.vue X18› _tests_( connect.lessV connect.vue> dashboardD Deallnsights> C errorPages› D export-portal> O extension-installed> D Invitation> O JoinConference> D layout> D LiveCoach› D Locked> D login› MeetingConsent› C mobile• D onboard› DJ_mocks_› _tests_V MobileAppDownk® Onboard.lessV Onboard.vueTs useProvidersSync› D ondemand› D playback> C playlistsSettings› OJ shared› SoftphoneCoach› C Svgicons› D Teaminsights> C composablesdirectiveshelpers> O locales© TeamSetupController.php xapi.phpSendReportJob.phpV© AutomatedReportsCommand.php© AskJiminnyReportsController.php© AutomatedReportsCommandTest.php49© AutomatedReportsSendCommand.php101Team.php138© AutomatedReportsRepository.php162AutomatedReportsService.php163© CreateHeldActivityEvent.phpTrackProviderInstalledEvent.php164© CreateActivityLoggedEvent.phpUserPilotActivityListener.php165166© ActivityLogged.php© AutomatedReportsCallbackService.php167© RequestGenerateAskJiminnyReportJob.php© RequestGenerateReportJob.php168169© AutomatedReportResult.php© AutomatedReport.php17021class TeamSetupController extends Control vA4 ×2 A Y167171public function integrationAppConnect(): JsonResponse104172185->setStatusCode( code:JsonResponse: :HTTP_BAL173186174187175188/** We keep all IntegrationApp providers as "integr‹176189$crmProviderKey = Providers::getTranslatedCrmProvid,177190178191/** @var ?SocialAccount $socialAccount */179192$socialAccount = $user->getSocialAccount($crmProvid 180193if ($socialAccount === null) {181194$this->logger->error('[IntegrationApp] Unexpectr182195'team_id'=> $team->getId(),183196'iapp_provider' => SrealProviderKey,184197'provider' => $crmProviderKey,1851981):186199187200return response()188201->json(l189202'success' => false,— 190203191Onboard.vue4 HS_local (jiminny@localhost]A console (EU]& console (PROD]& console [STAGING]<script>Wmethods: (async integrationApp0nClick) {1/"externalAppId":"6671653e7e2d642e4e41b0fa",////"authOptionKey":"","createdAt": "2026-04-16T10:04:10.420Z",//"updatedAt" : "2026-04-16T10:04:10.575Z",//"retryAttempts":0,//"isDeactivated": false1/ 3// if (connection && connection.connected === true) {if (connection && connection.discfnnected === false) {try {const saveRequest = await axios.post("Lapi/v1/integration-app-connect",if (saveRequest.data && saveRequest.data.success === tr/** If all is good refresh the page here */window.location = "/dashboard";return;throw new Error(saveRequest.data.message);} catch (error) {console. log(error);showSnackbarError(normalizeError(error));}Vite: Can't analyze // vite.config.js: coding assistance will ignore module resolution rules in this file. Error details: Unexpected token '??=. (today 12:48)W Windsurf Teams171:48 (12 chars)UTF-8Co 2 spaces...
|
NULL
|
|
36690
|
NULL
|
0
|
2026-04-16T10:53:31.876754+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776336811876_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhoStormEditViewNavigateCodelaravellRefactonRunlTo PhoStormEditViewNavigateCodelaravellRefactonRunlToolsWindowHeloDMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolov€. Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:Apps6 d Huddle with Vasil VasilevSearch Jiminny Inc0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverrelo he ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Suooort Dailv. in 1h7m100% 4• Thu 16 Aor 13:53:31nd Huddle with Vasil Vasiley• Hep L: →0 4 Support Daily « in 1h7m A 5Leave...
|
NULL
|
9120005509710671579
|
NULL
|
click
|
ocr
|
NULL
|
PhoStormEditViewNavigateCodelaravellRefactonRunlTo PhoStormEditViewNavigateCodelaravellRefactonRunlToolsWindowHeloDMsAchivityFilesMoreJiminny ...= Unreadse) Threads6d Huddles012• Drafts & sent:8 DirectoriesEh External connections* Starred@ liminny-x-integrati..platform-inner-team(# Channels# ai-chapten# alerts# backends contlicion-clnid# curiosity lab# engineering# frontendi# general# infra-changes#: liminny-bg# platrorm-uckets#: product launchesac random#: releases# sofa-ofhce# supportac thank-vous# the people of iimi....Direct messages• Nikolay Nikolov€. Vasil.... Galva DimitrovaNikolay Ivanov0 Aneliva Angelova3 Aneliya Angelova, ..Stoyan Tanev5- VegStelivan Georgiev3 Adelina Petrova, Ili..Adelina Petrova#:Apps6 d Huddle with Vasil VasilevSearch Jiminny Inc0. Nikolay NikolovMessages4P FilesChanges:~ 4 new messages• Return talse to skip remote engagement update with a secondary activity dataComments•jiminny/app|Apr 8th Added by GitHubThursday, April 9thvNikolay Nikolov 10:50 AMOautha mi изгърмя: [URL_WITH_CREDENTIALS] в дооде с негоИзкарва ми бутон за Recoverrelo he ree caraneMessage Nikolay NikolovAaQV- Al Notes: OfiLukas KovalikScreen shareAl Notes: OffLeave&Suooort Dailv. in 1h7m100% 4• Thu 16 Aor 13:53:31nd Huddle with Vasil Vasiley• Hep L: →0 4 Support Daily « in 1h7m A 5Leave...
|
36688
|
|
36766
|
NULL
|
0
|
2026-04-16T10:58:52.477156+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337132477_m1.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/onboard/Onboard.vue...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.054166667,"top":0.027777778,"width":0.08055556,"height":0.035555556},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.13472222,"top":0.027777778,"width":0.26597223,"height":0.035555556},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.6180556,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.65,"top":0.027777778,"width":0.1736111,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.82361114,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.8472222,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"More Actions","depth":6,"bounds":{"left":0.87083334,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.9291667,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.9527778,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.9763889,"top":0.027777778,"width":0.023611112,"height":0.035555556},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"bounds":{"left":0.5076389,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"bounds":{"left":0.52847224,"top":0.45,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.5486111,"top":0.44777778,"width":0.015277778,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.5638889,"top":0.44777778,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"bounds":{"left":0.5875,"top":0.18111111,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"bounds":{"left":0.61388886,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"disc","depth":4,"bounds":{"left":0.63680553,"top":0.18,"width":0.09166667,"height":0.022222223},"value":"disc","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.74722224,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"bounds":{"left":0.76805556,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"bounds":{"left":0.7861111,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"bounds":{"left":0.8041667,"top":0.18,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.0,"top":0.0,"width":0.015277778,"height":0.024444444},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"bounds":{"left":0.83263886,"top":0.17888889,"width":0.05347222,"height":0.024444444},"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"bounds":{"left":0.88611114,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"bounds":{"left":0.90416664,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"bounds":{"left":0.9222222,"top":0.17777778,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.088194445,"height":0.027777778},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.0,"top":0.0,"width":0.018055556,"height":0.026666667},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"bounds":{"left":0.90625,"top":0.2211111,"width":0.015277778,"height":0.02111111},"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"bounds":{"left":0.92569447,"top":0.2211111,"width":0.016666668,"height":0.02111111},"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"bounds":{"left":0.9458333,"top":0.2188889,"width":0.015277778,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"bounds":{"left":0.9611111,"top":0.2188889,"width":0.014583333,"height":0.025555555},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false}]...
|
9101995465193506738
|
756119827378317270
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>...
|
36764
|
|
36767
|
NULL
|
0
|
2026-04-16T10:58:53.824509+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337133824_m2.jpg...
|
PhpStorm
|
faVsco.js – ~/jiminny/app/front-end/src/components faVsco.js – ~/jiminny/app/front-end/src/components/onboard/Onboard.vue...
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
[{"role":"AXButton","text" [{"role":"AXButton","text":"Project: faVsco.js, menu","depth":5,"bounds":{"left":0.26367188,"top":1.0,"width":0.0453125,"height":-0.017361164},"help_text":"~/jiminny/app","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"#11894 on JY-18909-automated-reports-ask-jiminny, menu","depth":5,"bounds":{"left":0.30898437,"top":1.0,"width":0.14960937,"height":-0.017361164},"help_text":"Pull request #11894 exists for current branch JY-18909-automated-reports-ask-jiminny, but local branch is out of sync with remote","role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Start Listening for PHP Debug Connections","depth":5,"bounds":{"left":0.58085936,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"AutomatedReportsCommandTest","depth":6,"bounds":{"left":0.59882814,"top":1.0,"width":0.09765625,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Run 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.6964844,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Debug 'AutomatedReportsCommandTest'","depth":6,"bounds":{"left":0.7097656,"top":1.0,"width":0.01328125,"height":-0.017361164},"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.7230469,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"JetBrains AI","depth":5,"bounds":{"left":0.7558594,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Search Everywhere","depth":5,"bounds":{"left":0.7691406,"top":1.0,"width":0.01328125,"height":-0.017361164},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"IDE and Project Settings","depth":5,"bounds":{"left":0.7824219,"top":1.0,"width":0.01328125,"height":-0.017361164},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"4","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"2","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","depth":4,"value":"<?php\n\ndeclare(strict_types=1);\n\nnamespace Jiminny\\Http\\Controllers;\n\nuse Illuminate\\Http\\JsonResponse;\nuse Jiminny\\Component\\FeatureFlags\\FeatureRepository;\nuse Jiminny\\Contracts\\Crm\\Providers;\nuse Jiminny\\Events\\EventDispatcher;\nuse Jiminny\\Events\\Users\\SocialAccountConnected;\nuse Jiminny\\Integrations\\RouteProviderList;\nuse Jiminny\\Models\\SocialAccount;\nuse Jiminny\\Repositories\\SocialAccountRepository;\nuse Jiminny\\Services\\Crm\\IntegrationApp\\Api\\TokenBuilder;\nuse Psr\\Log\\LoggerInterface;\n\n/**\n * Provision important Team Setup option, that are in essence configurable.\n */\nclass TeamSetupController extends Controller\n{\n public function __construct(\n private readonly EventDispatcher $eventDispatcher,\n private readonly TokenBuilder $tokenBuilder,\n private readonly SocialAccountRepository $socialAccountRepository,\n private readonly LoggerInterface $logger,\n private readonly FeatureRepository $featureRepository,\n ) {\n parent::__construct();\n }\n public function features(): JsonResponse\n {\n $availableFeatures = $this->featureRepository->getFeatures();\n $availableFeaturesSerialised = [];\n foreach ($availableFeatures as $feature) {\n // getSlug() returns null for unknown enum values during deployment race condition\n $slug = $feature->getSlug();\n if ($slug === null) {\n continue;\n }\n $availableFeaturesSerialised[] = [\n 'id' => $slug->name,\n 'label' => $feature->getTitle(),\n 'description' => $feature->getDescription(),\n 'type' => $feature->getType()->name,\n 'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,\n ];\n }\n\n return response()->json($availableFeaturesSerialised);\n }\n\n public function tiers(): JsonResponse\n {\n $tiers = $this->featureRepository->getTiersOrderedByWeight();\n\n return response()->json(\n array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)\n );\n }\n\n /**\n * Get all enabled / available CRM providers\n */\n public function crmServices(): JsonResponse\n {\n return response()->json(\n Providers::getAllEnabledCrmProviders()\n );\n }\n\n public function calendars(): JsonResponse\n {\n return response()->json([\n ['id' => 'office', 'label' => 'Office'],\n ['id' => 'google', 'label' => 'Google'],\n ]);\n }\n\n public function connectProviders(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $providerSlug = $team->getCrmConfiguration()->getProviderName();\n\n $providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();\n if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {\n $providers[$providerSlug]['viaIntegrationApp'] = false;\n }\n\n return response()->json(array_values($providers));\n }\n\n /**\n * Prepare a token for integration app\n */\n public function integrationAppToken(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n return response()->json(['token' => '']);\n }\n\n /** No need to generate a token if the user des not require CRM */\n if (! $user->isCrmRequired()) {\n return response()->json(['token' => '']);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n\n /**\n * We need a valid token to communicate with IntegrationApp.\n *\n * Either we need to create a new valid token and save it in a social account\n */\n if ($socialAccount === null) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->create($user, [\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n /**\n * Or if a social account exists, but the token has expired, we need to regenerate it\n * and update the social account\n */\n if ($socialAccount->isExpired()) {\n $crmTokenCandidate = $this->tokenBuilder->create($team);\n $socialAccount = $this->socialAccountRepository->update($socialAccount, [\n 'provider_user_token' => $crmTokenCandidate,\n 'expires' => $this->tokenBuilder->getExpireTime(),\n ]);\n\n $this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [\n 'team_id' => $team->getId(),\n 'provider' => $crmProviderKey,\n 'provider_user_id' => $team->getUuid(),\n 'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,\n ]);\n }\n\n return response()->json([\n 'token' => $socialAccount->getProviderUserToken(),\n ]);\n }\n\n public function integrationAppConnect(): JsonResponse\n {\n $user = $this->getUser();\n $team = $user->getTeam();\n\n $realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());\n /** If the provider is not via Integration APP, do nothing */\n if (! Providers::isIntegrationAppProvider($realProviderKey)) {\n $this->logger->error('[IntegrationApp] Unexpected provider for connection.', [\n 'team_id' => $team->getId(),\n 'provider' => $realProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Action is not supported by the current CRM Provider',\n ])\n ->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);\n }\n\n /** We keep all IntegrationApp providers as \"integration-app\" in the SocialAccount */\n $crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);\n\n /** @var ?SocialAccount $socialAccount */\n $socialAccount = $user->getSocialAccount($crmProviderKey);\n if ($socialAccount === null) {\n $this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n ]);\n\n return response()\n ->json([\n 'success' => false,\n 'message' => 'Something went wrong. Social account is cannot be found.',\n ])\n ->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);\n }\n\n $socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);\n $socialAccount->save();\n\n $this->logger->info('[IntegrationApp] Social account is connected.', [\n 'team_id' => $team->getId(),\n 'iapp_provider' => $realProviderKey,\n 'provider' => $crmProviderKey,\n 'state' => SocialAccount::STATE_CONNECTED,\n ]);\n\n $this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));\n\n return response()\n ->json([\n 'success' => true,\n 'message' => sprintf(\n '%s is successfully connected',\n Providers::getIntegrationAppProviderLabel($realProviderKey)\n ),\n ])\n ->setStatusCode(JsonResponse::HTTP_ACCEPTED);\n }\n}","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Show Replace Field","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Search History","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"disc","depth":4,"value":"disc","role_description":"text entry area","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Match Case","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Words","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Regex","depth":3,"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Replace History","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextField","text":"Replace","depth":4,"role_description":"text field","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"New Line","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Preserve case","depth":3,"bounds":{"left":0.23320313,"top":1.0,"width":0.00859375,"height":0.0},"role_description":"checkbox","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1/1","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Occurrence","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Filter Search Results","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Open in Window, Multiple Cursors","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Click to highlight","depth":4,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Close","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Sync Changes","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide This Notification","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":false,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Code changed:","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.049609374,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":4,"role_description":"text"},{"role":"AXStaticText","text":"9","depth":4,"role_description":"text"},{"role":"AXButton","text":"Previous Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Next Highlighted Error","depth":4,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXTextArea","text":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","depth":4,"value":"<template>\n <WelcomeLayout v-bind=\"{ title: pageTitle }\">\n <MobileAppDownload\n v-if=\"isSuggestingMobileApp\"\n @ready=\"finishOnboarding()\"\n />\n <div v-else :class=\"$style.container\">\n <BuildInfo />\n <form>\n <!-- GENERAL Section-->\n <div :class=\"$style.sectionTitle\">General</div>\n\n <!-- Job title -->\n <SelectField\n v-if=\"showJobSelector && jobs.length > 0\"\n required=\"required\"\n name=\"jobTitleId\"\n fieldLabel=\"Select position\"\n v-model=\"form.job_title_id\"\n :options=\"jobs\"\n track-by=\"id\"\n :hasError=\"form.errors.has('job_title_id')\"\n :errorMessage=\"form.errors.get('job_title_id')\"\n optionLabel=\"name\"\n data-testid=\"job-title-selector\"\n />\n\n <!-- Timezone -->\n <SelectField\n required=\"required\"\n name=\"timezone\"\n optionLabel=\"label\"\n fieldLabel=\"Timezone\"\n :disabled=\"!timezonesReady\"\n v-model=\"form.timezone\"\n :options=\"timezonesArray\"\n :hasError=\"form.errors.has('timezone')\"\n :errorMessage=\"form.errors.get('timezone')\"\n track-by=\"tzCode\"\n />\n <!-- Transcription language -->\n <template v-if=\"canRecord\">\n <!-- LANGUAGE Section-->\n <div :class=\"$style.sectionTitle\">\n Languages spoken during calls\n\n <tippy theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon :icon=\"faCircleInfo\" :class=\"$style.infoIcon\" />\n <template #content>\n <div :class=\"$style.textLeft\">\n Select all languages spoken during call.<br />\n We automatically detect languages and if one isn’t identified,\n it will be translated into the default language\n </div>\n </template>\n </tippy>\n </div>\n <UserLocalesInputs\n :hasError=\"\n form.errors.has('language') || form.errors.has('locales')\n \"\n :errorMessage=\"\n form.errors.get('language') || form.errors.get('locales')\n \"\n :buttonAttrs=\"{ mods: 'primary seamless' }\"\n v-bind=\"{ userLocales }\"\n />\n </template>\n\n <!-- PHONE Section-->\n <div\n v-if=\"\n needsToConfigurePhoneNumber ||\n showDeskPhoneNumber ||\n needConfigureSoftphoneNumber\n \"\n :class=\"$style.sectionTitle\"\n >\n Phone\n </div>\n <!-- Configure Phone number -->\n <div :class=\"$style.panel\" v-if=\"needsToConfigurePhoneNumber\">\n <PhoneField\n required=\"required\"\n name=\"phone\"\n fieldLabel=\"Phone number\"\n v-model=\"form.phone\"\n tooltip=\"We'll use this to send you notifications and identify you.\"\n :hasError=\"form.errors.has('phone')\"\n :errorMessage=\"form.errors.get('phone')\"\n data-testid=\"phone-input\"\n />\n </div>\n <!-- Configure Desk Phone number -->\n <template v-if=\"showDeskPhoneNumber\">\n <PhoneField\n name=\"secondary_phone\"\n fieldLabel=\"Desk number\"\n v-model=\"form.secondary_phone\"\n :hasError=\"form.errors.has('secondary_phone')\"\n :errorMessage=\"form.errors.get('secondary_phone')\"\n data-testid=\"desk-phone-input\"\n />\n </template>\n <!-- Softphone Number (SMS & Inbound number) -->\n <div\n :class=\"[$style.panel, $style.conferenceNumberPanel]\"\n v-if=\"needConfigureSoftphoneNumber\"\n >\n <!-- Country Code selector -->\n <PhoneField\n :class=\"$style.countryCodeInput\"\n required=\"required\"\n name=\"softphone_country_code\"\n fieldLabel=\"Country\"\n :initialCountry=\"softphoneCountryCode\"\n :separateDialCode=\"true\"\n v-model=\"softphoneCountryCode\"\n @onCountryChange=\"softphoneCountryCode = $event.iso2\"\n />\n <!-- Area Code selector -->\n <Field\n v-slot=\"{ field, errorMessage }\"\n name=\"softphone_pattern\"\n :rules=\"`numeric|min:0|max:${softphonePattern.maxLength}`\"\n v-model=\"form.softphone_pattern\"\n >\n <InputField\n v-bind=\"field\"\n :disabled=\"form.busy\"\n fieldLabel=\"Area Code\"\n :hasError=\"!!errorMessage\"\n data-testid=\"area-code-input\"\n />\n </Field>\n <!-- Displays the softphone number in a user firendly format, example: \"(361) 345-7280\" -->\n <InputField\n :disabled=\"form.busy\"\n readonly\n name=\"softphone_national\"\n fieldLabel=\"SMS & Inbound\"\n v-model=\"form.softphone_national\"\n :hasError=\"form.errors.has('softphone_national')\"\n data-testid=\"softphone-input\"\n />\n <!-- Generate new softphone number -->\n <button\n type=\"button\"\n name=\"button\"\n data-testid=\"button-generate-softphone-number\"\n @click=\"getSoftphoneNumber\"\n :disabled=\"form.busy\"\n >\n <font-awesome-icon :icon=\"faSync\" />\n </button>\n <!-- Error messages -->\n <p class=\"error\" v-show=\"form.errors.has('softphone_number')\">\n {{ form.errors.get(\"softphone_number\") }}\n </p>\n <ErrorMessage name=\"softphone_pattern\" v-slot=\"{ message }\">\n <p class=\"error\" v-show=\"!!message\">\n {{ message }}\n </p>\n </ErrorMessage>\n <p class=\"error\" v-show=\"form.errors.has('softphone_pattern')\">\n {{ form.errors.get(\"softphone_pattern\") }}\n </p>\n <p class=\"error\" v-show=\"form.errors.has('softphone_country_code')\">\n {{ form.errors.get(\"softphone_country_code\") }}\n </p>\n </div>\n\n <!-- CONNECT -->\n <div\n v-if=\"\n hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible\n \"\n :class=\"$style.sectionTitle\"\n >\n Connect/Sync settings\n </div>\n <!-- CRM connection status -->\n <div data-testid=\"integrations-connections\" :class=\"$style.actionsRows\">\n <template v-if=\"hasCrmPermission\">\n <span>Connect {{ capitalizedCrmName }}</span>\n <!-- CRM connected -->\n <template v-if=\"crmConnection\">\n <AppButton\n data-testid=\"crm-connected\"\n variant=\"secondary\"\n readonly\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Connected\n </AppButton>\n </template>\n <!-- CRM not connected -->\n <template v-else>\n <AppButton\n v-if=\"crmDetails.viaIntegrationApp\"\n @click=\"crmConnectIntegrationApp\"\n variant=\"secondary\"\n :busy=\"!crmToken\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n <AppButton\n v-else\n :href=\"crmConnectUrl\"\n variant=\"secondary\"\n data-testid=\"crm-signin\"\n >\n <BrandLogo :name=\"crmDetails.name\" />\n Sign in with {{ capitalizedCrmName }}\n </AppButton>\n </template>\n </template>\n\n <template v-if=\"sync.ui.visible\">\n <span data-testid=\"sync-text\"\n ><span\n >{{ sync.ui.text\n }}<span v-if=\"sync.ui.required\" :class=\"$style.asterisk\"></span\n ></span>\n <tippy v-if=\"sync.ui.tip\" theme=\"primary\" placement=\"bottom\">\n <FontAwesomeIcon\n :icon=\"faCircleInfo\"\n :class=\"$style.infoIcon\"\n />\n <template #content>\n <div :class=\"$style.textLeft\">\n We will use your email account to give you a more complete\n view of activity related to your customers. Only emails with\n participants connected to an external CRM record are stored\n and displayed.\n </div>\n </template>\n </tippy>\n </span>\n <AppButton\n v-if=\"sync.ui.completed\"\n readonly\n variant=\"secondary\"\n data-testid=\"sync-completed\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Completed\n </AppButton>\n <AppButton\n v-else\n variant=\"secondary\"\n :href=\"sync.ui.href\"\n busy=\"auto\"\n data-testid=\"sync-signin\"\n >\n <BrandLogo :name=\"sync.provider\" />\n Sign in with\n {{ sync.provider == \"office\" ? \"Office 365\" : \"Google\" }}\n </AppButton>\n </template>\n\n <!-- Sidekick Extension Installation status -->\n <BrowserExtensionInstaller\n v-if=\"hasBrowserExtensionInstaller\"\n :extension-id=\"chromeExtensionId\"\n as=\"template\"\n >\n <template #notInstalled=\"{ startChecking }\">\n <span>Jiminny Sidekick Extension</span>\n <AppButton\n :href=\"chromeWebstoreUrl\"\n mods=\"primary outline\"\n @click=\"startChecking\"\n >\n Add to Chrome\n </AppButton>\n </template>\n <template #installed>\n <span>Jiminny Sidekick Extension</span>\n <StatusBadge preset=\"success\">Added</StatusBadge>\n </template>\n </BrowserExtensionInstaller>\n </div>\n </form>\n <!-- Submit Form Button -->\n <AppButton\n @click=\"update\"\n :disabled=\"submitDisabled\"\n variant=\"primary\"\n :class=\"$style.submitButton\"\n mods=\"lg\"\n >\n <template v-if=\"form.busy\">\n <i class=\"fa fa-btn fa-spinner fa-spin fa-icon-padding\"></i>One\n Moment...\n </template>\n <template v-else>\n Let's Get Started!\n <font-awesome-icon\n :icon=\"faLongArrowRight\"\n :class=\"$style.submitIcon\"\n />\n </template>\n </AppButton>\n </div>\n </WelcomeLayout>\n</template>\n\n<script>\n// Icons\nimport { FontAwesomeIcon } from \"@fortawesome/vue-fontawesome\";\nimport { faCheckCircle, faSync } from \"@fortawesome/pro-regular-svg-icons\";\nimport {\n faCircleInfo,\n faLongArrowRight,\n} from \"@fortawesome/pro-light-svg-icons\";\nimport { faSalesforce } from \"@fortawesome/free-brands-svg-icons/faSalesforce\";\n// Components\nimport BrowserExtensionInstaller from \"@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue\";\nimport PhoneField from \"@/components/Settings/shared/FormElements/PhoneField.vue\";\nimport SelectField from \"@/components/Settings/shared/FormElements/SelectField.vue\";\nimport BuildInfo from \"@/components/layout/BuildInfo/BuildInfo.vue\";\nimport InputField from \"@/components/Settings/shared/FormElements/InputField.vue\";\nimport AppButton from \"@/components/shared/Buttons/AppButton.vue\";\nimport StatusBadge from \"@/components/shared/StatusBadge/StatusBadge.vue\";\nimport BrandLogo from \"@/components/shared/BrandLogo.vue\";\nimport MobileAppModal from \"@/components/shared/modals/MobileAppModal.vue\";\nimport WelcomeLayout from \"@/components/layout/WelcomeLayout/WelcomeLayout.vue\";\nimport MobileAppDownload from \"@/components/onboard/MobileAppDownload.vue\";\n// Utils\nimport { JiminnyForm, localStorage } from \"window\";\nimport axios from \"axios\";\nimport env from \"@/utils/env\";\nimport useragent from \"@/utils/useragent\";\nimport { isMobileAppSupported, isMobile } from \"@/utils/mobileApp\";\nimport useAuthState from \"@/composables/useAuthState\";\nimport { useForm, ErrorMessage, Field, defineRule } from \"vee-validate\";\nimport DOMPurify from \"dompurify\";\nimport useTimezonesCountriesHelper from \"@/composables/useTimezonesCountriesHelper\";\nimport { computed, ref, onMounted, watch, unref, reactive } from \"vue\";\nimport { openModal } from \"jenesius-vue-modal\";\nimport { useStore } from \"vuex\";\nimport * as Sentry from \"@sentry/vue\";\nimport { numeric, min, max } from \"@vee-validate/rules\";\nimport { useLocalStorage } from \"@vueuse/core\";\nimport { showSnackbarError, normalizeError } from \"@/utils\";\nimport { Tippy } from \"vue-tippy\";\nimport intlTelInput from \"intl-tel-input\";\nimport { useUserLocalesSettings } from \"@/composables/useUserLocalesSettings\";\nimport UserLocalesInputs from \"@/components/shared/UserLocalesInputs/UserLocalesInputs.vue\";\nimport { IntegrationAppClient } from \"@integration-app/sdk\";\nimport useProvidersSyncState from \"./useProvidersSyncState\";\n\ndefineRule(\"numeric\", numeric);\ndefineRule(\"min\", min);\ndefineRule(\"max\", max);\n\nexport default {\n name: \"OnboardPage\",\n components: {\n BuildInfo,\n FontAwesomeIcon,\n BrowserExtensionInstaller,\n PhoneField,\n SelectField,\n InputField,\n Field,\n ErrorMessage,\n AppButton,\n StatusBadge,\n BrandLogo,\n WelcomeLayout,\n MobileAppDownload,\n Tippy,\n UserLocalesInputs,\n },\n setup() {\n const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =\n window.onboardData;\n\n const countryCodes = [\"CA\", \"US\"];\n const chromeExtensionId = env(\"CHROME_WEB_STORE_EXT_ID\");\n const inChrome = useragent.browser.name === \"Chrome\";\n\n // Store getters\n const store = useStore();\n const user = computed(() => store.getters[\"platform/user\"]);\n const team = computed(() => store.getters[\"platform/team\"]);\n // Actions\n const updateUser = store.dispatch.bind(store, \"platform/updateUser\");\n\n const sync = useProvidersSyncState();\n\n let unwatch = null;\n\n const { validate } = useForm();\n const { canAny } = useAuthState();\n\n const { timezonesArray, initTimezones, timezonesReady } =\n useTimezonesCountriesHelper();\n\n initTimezones();\n\n const finishOnboardingUtils = useFinishOnboarding();\n\n const jobs = ref([]);\n\n const { cache: cachedForm, clearCache: clearCachedForm } =\n useUserCache(\"onboard-form\");\n\n const userLocales = reactive(\n useUserLocalesSettings({\n modelMinLength: 1,\n cachedUserData: cachedForm.value,\n }),\n );\n\n const form = ref(\n new JiminnyForm({\n phone: \"\", // mobile phone\n job_title_id: \"\",\n secondary_phone: \"\", // secondary phone if softphoneSecondaryRoute = 'work'\n country_code: \"\",\n softphone_pattern: null,\n softphone_number: \"\", // telephony provider i.e. sms/softphone number\n softphone_national: \"\", // national formatted sms/softphone number\n timezone: \"\",\n ...cachedForm.value,\n }),\n );\n\n const countries = computed(() => {\n return intlTelInput.getCountryData().map((data) => {\n return {\n id: data.iso2,\n text: `+${data.dialCode}`,\n };\n });\n });\n\n const softphonePattern = computed(() => {\n const countryCode = form.value[\"softphone_country_code\"]?.toUpperCase();\n\n if (!countryCode) return {};\n\n return countryCodes.includes(countryCode)\n ? {\n maxLength: 3,\n helper: \"Please select your area code e.g. 917\",\n }\n : {\n maxLength: 5,\n helper: \"Your local area code e.g. 0161\",\n };\n });\n const chromeWebstoreUrl = ref(null);\n const softphoneCountryCode = ref(\n form.value[\"softphone_country_code\"] || \"\",\n );\n\n watch(\n () => softphoneCountryCode.value,\n (newValue) => {\n onSoftphoneCountryCodeChange(newValue);\n },\n );\n\n // Computed Props\n const userHasTelephonyPermission = computed(() => canAny([\"dial\", \"sms\"]));\n const capitalizedCrmName = crmDetails.displayName;\n const needConfigureSoftphoneNumber = computed(\n () => !user.value.softphoneNumber && userHasTelephonyPermission.value,\n );\n const needsToConfigurePhoneNumber = computed(\n () => user.value.needsToConfigurePhoneNumber,\n );\n const hasBrowserExtensionInstaller = computed(\n () =>\n canAny([\"record.meeting\", \"dial\"]) &&\n user.value.hasSidekickEnabled &&\n inChrome &&\n chromeExtensionId &&\n chromeWebstoreUrl.value,\n );\n const hasCrmPermission = computed(\n () => user.value.crmRequired && crmRequired,\n );\n const crmConnectUrl = computed(\n () => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,\n );\n\n /** BEGIN: IntegrationApp related functionality */\n\n const crmToken = ref(null);\n\n const crmConnectIntegrationApp = async function () {\n const integrationApp = new IntegrationAppClient({\n token: crmToken.value,\n });\n\n const connection = await integrationApp\n .integration(crmDetails.name)\n .openNewConnection({\n showPoweredBy: false,\n allowMultipleConnections: false,\n });\n\n // if (!connection || connection.connected === false) {\n if (!connection || connection.disconnected === true) {\n showSnackbarError(\n \"A connection with your CRM could not be established\",\n );\n return;\n }\n\n try {\n const saveRequest = await axios.post(\"/api/v1/integration-app-connect\");\n\n if (saveRequest.data && saveRequest.data.success === true) {\n /** If all is good refresh the page here */\n return location.reload();\n }\n\n throw new Error(saveRequest.data.message);\n } catch (error) {\n console.log(error);\n showSnackbarError(normalizeError(error));\n }\n };\n\n const prepareIntegrationAppConnection = async function () {\n if (crmDetails?.viaIntegrationApp) {\n try {\n const response = await axios.get(\"/api/v1/integration-app-token\");\n crmToken.value = response.data.token;\n } catch (error) {\n console.log(error);\n showSnackbarError(\n `An error occurred while preparing the page.\n Try refreshing, if the error persists get in touch with the Jiminny team.`,\n );\n }\n }\n };\n if (crmRequired) {\n // Prepare the crm token only if the CRM is required\n prepareIntegrationAppConnection();\n }\n /** END: IntegrationApp related functionality */\n\n const showJobSelector = computed(() => !user.value.job);\n const showDeskPhoneNumber = computed(\n () =>\n needsToConfigurePhoneNumber.value &&\n !user.value.secondaryPhone &&\n team.value.softphoneRoutingPreference,\n );\n // Only users who can record calls\n const canRecord = computed(() => canAny([\"record.meeting\", \"dial\"]));\n\n const submitDisabled = computed(() => {\n if (unref(form).busy) return true;\n return sync.anyNeedAuthorization;\n });\n\n // Methods\n function showErrors() {\n if (backendErrors.length > 0) {\n backendErrors.forEach((error) =>\n showSnackbarError(error, undefined, undefined, false),\n );\n }\n }\n\n async function getSoftphoneNumber() {\n form.value.errors.forget();\n\n if (!form.value[\"softphone_country_code\"]) {\n return form.value.errors.set({\n softphone_country_code: [\"The country field is required.\"],\n });\n }\n\n const { valid } = await validate();\n\n if (!valid) {\n return;\n }\n\n try {\n const params = {\n pattern: form.value[\"softphone_pattern\"],\n country_code: form.value[\"softphone_country_code\"].toUpperCase(),\n capabilities: [\"voice\", \"sms\"],\n };\n\n /**\n * Exemplary response:\n * {\n * \"number\": \"+447782581047\",\n * \"national\": \"07782 581322\", // national is formatted number\n * \"pattern\": \"7782\" // patrten is area code\n * }\n */\n const { data } = await axios.get(\"/api/v1/phone-numbers\", {\n params,\n });\n\n form.value[\"softphone_number\"] = data?.number || \"\";\n form.value[\"softphone_national\"] = data?.national || \"\";\n form.value[\"softphone_pattern\"] = data?.pattern || null;\n } catch (errors) {\n form.value[\"softphone_number\"] = \"\";\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_pattern\"] = null;\n\n handleErrors(errors.response.data);\n }\n }\n\n function handleErrors(errors) {\n if (Object.prototype.hasOwnProperty.call(errors, \"errors\")) {\n form.value.errors.set(errors.errors);\n } else {\n form.value.errors.set(errors);\n }\n }\n\n async function getJobTitles() {\n const response = await axios.get(\n `/api/v1/organizations/${team.value.id}/job-titles`,\n );\n\n jobs.value = response.data;\n }\n\n function preselectSoftphoneCountryCode() {\n form.value[\"softphone_country_code\"] ||= selectedCountry()?.id || \"\";\n }\n\n function selectedCountry() {\n const countryCode = user.value.countryCode?.toLowerCase() || \"\";\n\n if (!countryCode) return \"\";\n\n return countries.value.find((country) => country.id === countryCode);\n }\n\n function onSoftphoneCountryCodeChange(countryCode) {\n form.value[\"softphone_country_code\"] = countryCode;\n form.value[\"softphone_pattern\"] = null;\n form.value[\"softphone_national\"] = \"\";\n form.value[\"softphone_number\"] = \"\";\n getSoftphoneNumber();\n }\n\n async function update() {\n try {\n form.value.busy = true;\n const payload = form.value;\n payload[\"country_code\"] = form.value[\"country_code\"].toUpperCase();\n Object.assign(payload, unref(userLocales.formData));\n\n await axios.post(\"/onboard\", payload);\n\n form.value.errors.forget();\n localStorage.setItem(\"showVerifyCallerIdModal\", true);\n updateUser();\n clearCachedForm();\n finishOnboardingUtils.onOnboardReady();\n } catch (errors) {\n const response = errors.response.data;\n const errorData = Object.hasOwn(response, \"errors\")\n ? errors.response.data.errors\n : errors.response.data;\n\n form.value.errors.set(errorData);\n if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);\n if (errorData.sync_calendar)\n showSnackbarError(errorData.sync_calendar[0]);\n } finally {\n form.value.busy = false;\n }\n }\n\n function resetLanguageError(value) {\n if (value) {\n form.value.errors.set(\"language\", \"\");\n }\n }\n\n // preselect timezone\n unwatch = watch(\n () => timezonesReady.value,\n (ready) => {\n // user already selected a timezone\n if (form.value.timezone) return;\n if (!ready) return;\n\n const browserTimezone =\n Intl.DateTimeFormat().resolvedOptions().timeZone;\n\n const hasBrowserTimezone = timezonesArray.value.some(\n ({ tzCode }) => tzCode === browserTimezone,\n );\n\n if (hasBrowserTimezone) {\n form.value[\"timezone\"] = browserTimezone;\n } else {\n // Fallback to the initial user timezone (which should match the team timezone)\n form.value[\"timezone\"] = user.value?.timezone || \"\";\n\n const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: \"${browserTimezone}\"`;\n\n console.error(errorMessage);\n Sentry.captureException(new Error(errorMessage));\n }\n\n // Stop watching\n if (unwatch) {\n unwatch();\n }\n },\n { immediate: true },\n );\n\n onMounted(() => {\n showErrors();\n\n if (needConfigureSoftphoneNumber.value) {\n preselectSoftphoneCountryCode();\n if (!form.value.softphone_number) getSoftphoneNumber();\n }\n\n form.value[\"phone\"] ||= user.value.phone || \"\";\n form.value[\"secondary_phone\"] ||= user.value.secondaryPhone || \"\";\n form.value[\"softphone_number\"] ||= user.value.softphoneNumber || \"\";\n form.value[\"job_title_id\"] ||= user.value.job?.id || false;\n\n if (canRecord.value) {\n form.value[\"language\"] ||= \"\";\n }\n\n if (showJobSelector.value) getJobTitles();\n\n const webStoreUrlLink = document.querySelector(\n \"link[rel=chrome-webstore-item]\",\n );\n\n if (webStoreUrlLink) {\n chromeWebstoreUrl.value = DOMPurify.sanitize(\n webStoreUrlLink.getAttribute(\"href\"),\n );\n }\n });\n\n watch(\n form,\n (form) => {\n cachedForm.value = form;\n },\n { deep: true },\n );\n\n watch(\n () => userLocales.formData,\n (userLocales) => {\n cachedForm.value = {\n ...cachedForm.value,\n ...userLocales,\n };\n },\n );\n\n return {\n submitDisabled,\n ...finishOnboardingUtils,\n userLocales,\n sync,\n clearCachedForm,\n validate,\n faCircleInfo,\n faLongArrowRight,\n faSalesforce,\n faCheckCircle,\n faSync,\n timezonesArray,\n timezonesReady,\n crmConnection,\n crmName,\n crmDetails,\n softphoneCountryCode,\n countries,\n softphonePattern,\n chromeWebstoreUrl,\n chromeExtensionId,\n user,\n capitalizedCrmName,\n needConfigureSoftphoneNumber,\n needsToConfigurePhoneNumber,\n hasBrowserExtensionInstaller,\n hasCrmPermission,\n crmConnectUrl,\n crmConnectIntegrationApp,\n showJobSelector,\n showDeskPhoneNumber,\n canRecord,\n getSoftphoneNumber,\n update,\n resetLanguageError,\n form,\n jobs,\n crmToken,\n };\n },\n};\n\nfunction useFinishOnboarding() {\n const isSuggestingMobileApp = ref(null);\n const pageTitle = computed(() =>\n isMobileAppSupported && unref(isSuggestingMobileApp)\n ? \"Download App\"\n : \"Update your information\",\n );\n\n const store = useStore();\n\n const isWhiteLabel = computed(() => store.getters[\"platform/isWhiteLabel\"]);\n\n async function suggestMobileApp() {\n isSuggestingMobileApp.value = isMobileAppSupported;\n\n // for supported phones a corresponding download component is displayed\n if (unref(isSuggestingMobileApp)) return;\n\n // for non mobile devices a modal is displayed and an action is required\n if (!isMobile) await openMobileAppModal();\n\n finishOnboarding();\n }\n\n async function finishOnboarding() {\n window.location = \"/dashboard\";\n }\n\n async function openMobileAppModal() {\n const modal = await openModal(MobileAppModal);\n\n return new Promise((resolve) => (modal.onclose = resolve));\n }\n\n function onOnboardReady() {\n if (unref(isWhiteLabel)) return finishOnboarding();\n\n suggestMobileApp();\n }\n\n return {\n pageTitle,\n isSuggestingMobileApp,\n finishOnboarding,\n onOnboardReady,\n };\n}\n\nfunction useUserCache(key, defaultValue = {}) {\n const store = useStore();\n const id = computed(() => store.getters[\"platform/user\"]?.id);\n const cache = useLocalStorage(key, {});\n\n function clearCache() {\n cache.value = undefined;\n }\n\n return {\n cache: computed({\n get() {\n return cache.value[id.value] || defaultValue;\n },\n set(value) {\n cache.value = {\n [id.value]: value,\n };\n },\n }),\n clearCache,\n };\n}\n</script>\n\n<style module lang=\"less\" src=\"./Onboard.less\"></style>","role_description":"text entry area","is_enabled":true,"is_focused":true,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Project","depth":3,"role_description":"text"},{"role":"AXButton","text":"Project","depth":3,"bounds":{"left":0.24726562,"top":1.0,"width":0.028515626,"height":-0.041666627},"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.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Expand Selected","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Collapse All","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Options","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Hide","depth":4,"bounds":{"left":0.23320313,"top":1.0,"width":0.01015625,"height":0.0},"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
-5404656095542864604
|
756119818788382679
|
idle
|
accessibility
|
NULL
|
Project: faVsco.js, menu
#11894 on JY-18909-automa Project: faVsco.js, menu
#11894 on JY-18909-automated-reports-ask-jiminny, menu
Start Listening for PHP Debug Connections
AutomatedReportsCommandTest
Run 'AutomatedReportsCommandTest'
Debug 'AutomatedReportsCommandTest'
More Actions
JetBrains AI
Search Everywhere
IDE and Project Settings
Sync Changes
Hide This Notification
Code changed:
Hide
4
2
Previous Highlighted Error
Next Highlighted Error
<?php
declare(strict_types=1);
namespace Jiminny\Http\Controllers;
use Illuminate\Http\JsonResponse;
use Jiminny\Component\FeatureFlags\FeatureRepository;
use Jiminny\Contracts\Crm\Providers;
use Jiminny\Events\EventDispatcher;
use Jiminny\Events\Users\SocialAccountConnected;
use Jiminny\Integrations\RouteProviderList;
use Jiminny\Models\SocialAccount;
use Jiminny\Repositories\SocialAccountRepository;
use Jiminny\Services\Crm\IntegrationApp\Api\TokenBuilder;
use Psr\Log\LoggerInterface;
/**
* Provision important Team Setup option, that are in essence configurable.
*/
class TeamSetupController extends Controller
{
public function __construct(
private readonly EventDispatcher $eventDispatcher,
private readonly TokenBuilder $tokenBuilder,
private readonly SocialAccountRepository $socialAccountRepository,
private readonly LoggerInterface $logger,
private readonly FeatureRepository $featureRepository,
) {
parent::__construct();
}
public function features(): JsonResponse
{
$availableFeatures = $this->featureRepository->getFeatures();
$availableFeaturesSerialised = [];
foreach ($availableFeatures as $feature) {
// getSlug() returns null for unknown enum values during deployment race condition
$slug = $feature->getSlug();
if ($slug === null) {
continue;
}
$availableFeaturesSerialised[] = [
'id' => $slug->name,
'label' => $feature->getTitle(),
'description' => $feature->getDescription(),
'type' => $feature->getType()->name,
'tier_id' => $feature->getTier() ? $feature->getTier()->getUuid() : null,
];
}
return response()->json($availableFeaturesSerialised);
}
public function tiers(): JsonResponse
{
$tiers = $this->featureRepository->getTiersOrderedByWeight();
return response()->json(
array_map(static function ($tier) { return ['id' => $tier->getUuid(), 'title' => $tier->getTitle()]; }, $tiers)
);
}
/**
* Get all enabled / available CRM providers
*/
public function crmServices(): JsonResponse
{
return response()->json(
Providers::getAllEnabledCrmProviders()
);
}
public function calendars(): JsonResponse
{
return response()->json([
['id' => 'office', 'label' => 'Office'],
['id' => 'google', 'label' => 'Google'],
]);
}
public function connectProviders(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$providerSlug = $team->getCrmConfiguration()->getProviderName();
$providers = RouteProviderList::getFrontendDefinitionsForConnectProviders();
if (Providers::isSalesforceTestableViaIntegrationApp($providerSlug)) {
$providers[$providerSlug]['viaIntegrationApp'] = false;
}
return response()->json(array_values($providers));
}
/**
* Prepare a token for integration app
*/
public function integrationAppToken(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
return response()->json(['token' => '']);
}
/** No need to generate a token if the user des not require CRM */
if (! $user->isCrmRequired()) {
return response()->json(['token' => '']);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
$socialAccount = $user->getSocialAccount($crmProviderKey);
/**
* We need a valid token to communicate with IntegrationApp.
*
* Either we need to create a new valid token and save it in a social account
*/
if ($socialAccount === null) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->create($user, [
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
$this->logger->info('[IntegrationApp] Connect step - New social account created with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
/**
* Or if a social account exists, but the token has expired, we need to regenerate it
* and update the social account
*/
if ($socialAccount->isExpired()) {
$crmTokenCandidate = $this->tokenBuilder->create($team);
$socialAccount = $this->socialAccountRepository->update($socialAccount, [
'provider_user_token' => $crmTokenCandidate,
'expires' => $this->tokenBuilder->getExpireTime(),
]);
$this->logger->info('[IntegrationApp] Connect step - Social account updated with new token.', [
'team_id' => $team->getId(),
'provider' => $crmProviderKey,
'provider_user_id' => $team->getUuid(),
'state' => SocialAccount::STATE_FULL_REFRESH_REQUIRED,
]);
}
return response()->json([
'token' => $socialAccount->getProviderUserToken(),
]);
}
public function integrationAppConnect(): JsonResponse
{
$user = $this->getUser();
$team = $user->getTeam();
$realProviderKey = Providers::getCrmIntegrationSlug($team->getCrmConfiguration());
/** If the provider is not via Integration APP, do nothing */
if (! Providers::isIntegrationAppProvider($realProviderKey)) {
$this->logger->error('[IntegrationApp] Unexpected provider for connection.', [
'team_id' => $team->getId(),
'provider' => $realProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Action is not supported by the current CRM Provider',
])
->setStatusCode(JsonResponse::HTTP_BAD_REQUEST);
}
/** We keep all IntegrationApp providers as "integration-app" in the SocialAccount */
$crmProviderKey = Providers::getTranslatedCrmProviderKey($realProviderKey);
/** @var ?SocialAccount $socialAccount */
$socialAccount = $user->getSocialAccount($crmProviderKey);
if ($socialAccount === null) {
$this->logger->error('[IntegrationApp] Unexpected error. Social account is missing.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
]);
return response()
->json([
'success' => false,
'message' => 'Something went wrong. Social account is cannot be found.',
])
->setStatusCode(JsonResponse::HTTP_FAILED_DEPENDENCY);
}
$socialAccount->setAttribute('state', SocialAccount::STATE_CONNECTED);
$socialAccount->save();
$this->logger->info('[IntegrationApp] Social account is connected.', [
'team_id' => $team->getId(),
'iapp_provider' => $realProviderKey,
'provider' => $crmProviderKey,
'state' => SocialAccount::STATE_CONNECTED,
]);
$this->eventDispatcher->dispatch(new SocialAccountConnected($socialAccount));
return response()
->json([
'success' => true,
'message' => sprintf(
'%s is successfully connected',
Providers::getIntegrationAppProviderLabel($realProviderKey)
),
])
->setStatusCode(JsonResponse::HTTP_ACCEPTED);
}
}
Show Replace Field
Search History
disc
New Line
Match Case
Words
Regex
Replace History
Replace
New Line
Preserve case
1/1
Previous Occurrence
Next Occurrence
Filter Search Results
Open in Window, Multiple Cursors
Click to highlight
Close
Sync Changes
Hide This Notification
Code changed:
Hide
1
9
Previous Highlighted Error
Next Highlighted Error
<template>
<WelcomeLayout v-bind="{ title: pageTitle }">
<MobileAppDownload
v-if="isSuggestingMobileApp"
@ready="finishOnboarding()"
/>
<div v-else :class="$style.container">
<BuildInfo />
<form>
<!-- GENERAL Section-->
<div :class="$style.sectionTitle">General</div>
<!-- Job title -->
<SelectField
v-if="showJobSelector && jobs.length > 0"
required="required"
name="jobTitleId"
fieldLabel="Select position"
v-model="form.job_title_id"
:options="jobs"
track-by="id"
:hasError="form.errors.has('job_title_id')"
:errorMessage="form.errors.get('job_title_id')"
optionLabel="name"
data-testid="job-title-selector"
/>
<!-- Timezone -->
<SelectField
required="required"
name="timezone"
optionLabel="label"
fieldLabel="Timezone"
:disabled="!timezonesReady"
v-model="form.timezone"
:options="timezonesArray"
:hasError="form.errors.has('timezone')"
:errorMessage="form.errors.get('timezone')"
track-by="tzCode"
/>
<!-- Transcription language -->
<template v-if="canRecord">
<!-- LANGUAGE Section-->
<div :class="$style.sectionTitle">
Languages spoken during calls
<tippy theme="primary" placement="bottom">
<FontAwesomeIcon :icon="faCircleInfo" :class="$style.infoIcon" />
<template #content>
<div :class="$style.textLeft">
Select all languages spoken during call.<br />
We automatically detect languages and if one isn’t identified,
it will be translated into the default language
</div>
</template>
</tippy>
</div>
<UserLocalesInputs
:hasError="
form.errors.has('language') || form.errors.has('locales')
"
:errorMessage="
form.errors.get('language') || form.errors.get('locales')
"
:buttonAttrs="{ mods: 'primary seamless' }"
v-bind="{ userLocales }"
/>
</template>
<!-- PHONE Section-->
<div
v-if="
needsToConfigurePhoneNumber ||
showDeskPhoneNumber ||
needConfigureSoftphoneNumber
"
:class="$style.sectionTitle"
>
Phone
</div>
<!-- Configure Phone number -->
<div :class="$style.panel" v-if="needsToConfigurePhoneNumber">
<PhoneField
required="required"
name="phone"
fieldLabel="Phone number"
v-model="form.phone"
tooltip="We'll use this to send you notifications and identify you."
:hasError="form.errors.has('phone')"
:errorMessage="form.errors.get('phone')"
data-testid="phone-input"
/>
</div>
<!-- Configure Desk Phone number -->
<template v-if="showDeskPhoneNumber">
<PhoneField
name="secondary_phone"
fieldLabel="Desk number"
v-model="form.secondary_phone"
:hasError="form.errors.has('secondary_phone')"
:errorMessage="form.errors.get('secondary_phone')"
data-testid="desk-phone-input"
/>
</template>
<!-- Softphone Number (SMS & Inbound number) -->
<div
:class="[$style.panel, $style.conferenceNumberPanel]"
v-if="needConfigureSoftphoneNumber"
>
<!-- Country Code selector -->
<PhoneField
:class="$style.countryCodeInput"
required="required"
name="softphone_country_code"
fieldLabel="Country"
:initialCountry="softphoneCountryCode"
:separateDialCode="true"
v-model="softphoneCountryCode"
@onCountryChange="softphoneCountryCode = $event.iso2"
/>
<!-- Area Code selector -->
<Field
v-slot="{ field, errorMessage }"
name="softphone_pattern"
:rules="`numeric|min:0|max:${softphonePattern.maxLength}`"
v-model="form.softphone_pattern"
>
<InputField
v-bind="field"
:disabled="form.busy"
fieldLabel="Area Code"
:hasError="!!errorMessage"
data-testid="area-code-input"
/>
</Field>
<!-- Displays the softphone number in a user firendly format, example: "[PHONE]" -->
<InputField
:disabled="form.busy"
readonly
name="softphone_national"
fieldLabel="SMS & Inbound"
v-model="form.softphone_national"
:hasError="form.errors.has('softphone_national')"
data-testid="softphone-input"
/>
<!-- Generate new softphone number -->
<button
type="button"
name="button"
data-testid="button-generate-softphone-number"
@click="getSoftphoneNumber"
:disabled="form.busy"
>
<font-awesome-icon :icon="faSync" />
</button>
<!-- Error messages -->
<p class="error" v-show="form.errors.has('softphone_number')">
{{ form.errors.get("softphone_number") }}
</p>
<ErrorMessage name="softphone_pattern" v-slot="{ message }">
<p class="error" v-show="!!message">
{{ message }}
</p>
</ErrorMessage>
<p class="error" v-show="form.errors.has('softphone_pattern')">
{{ form.errors.get("softphone_pattern") }}
</p>
<p class="error" v-show="form.errors.has('softphone_country_code')">
{{ form.errors.get("softphone_country_code") }}
</p>
</div>
<!-- CONNECT -->
<div
v-if="
hasBrowserExtensionInstaller || hasCrmPermission || sync.ui.visible
"
:class="$style.sectionTitle"
>
Connect/Sync settings
</div>
<!-- CRM connection status -->
<div data-testid="integrations-connections" :class="$style.actionsRows">
<template v-if="hasCrmPermission">
<span>Connect {{ capitalizedCrmName }}</span>
<!-- CRM connected -->
<template v-if="crmConnection">
<AppButton
data-testid="crm-connected"
variant="secondary"
readonly
>
<BrandLogo :name="crmDetails.name" />
Connected
</AppButton>
</template>
<!-- CRM not connected -->
<template v-else>
<AppButton
v-if="crmDetails.viaIntegrationApp"
@click="crmConnectIntegrationApp"
variant="secondary"
:busy="!crmToken"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
<AppButton
v-else
:href="crmConnectUrl"
variant="secondary"
data-testid="crm-signin"
>
<BrandLogo :name="crmDetails.name" />
Sign in with {{ capitalizedCrmName }}
</AppButton>
</template>
</template>
<template v-if="sync.ui.visible">
<span data-testid="sync-text"
><span
>{{ sync.ui.text
}}<span v-if="sync.ui.required" :class="$style.asterisk"></span
></span>
<tippy v-if="sync.ui.tip" theme="primary" placement="bottom">
<FontAwesomeIcon
:icon="faCircleInfo"
:class="$style.infoIcon"
/>
<template #content>
<div :class="$style.textLeft">
We will use your email account to give you a more complete
view of activity related to your customers. Only emails with
participants connected to an external CRM record are stored
and displayed.
</div>
</template>
</tippy>
</span>
<AppButton
v-if="sync.ui.completed"
readonly
variant="secondary"
data-testid="sync-completed"
>
<BrandLogo :name="sync.provider" />
Completed
</AppButton>
<AppButton
v-else
variant="secondary"
:href="sync.ui.href"
busy="auto"
data-testid="sync-signin"
>
<BrandLogo :name="sync.provider" />
Sign in with
{{ sync.provider == "office" ? "Office 365" : "Google" }}
</AppButton>
</template>
<!-- Sidekick Extension Installation status -->
<BrowserExtensionInstaller
v-if="hasBrowserExtensionInstaller"
:extension-id="chromeExtensionId"
as="template"
>
<template #notInstalled="{ startChecking }">
<span>Jiminny Sidekick Extension</span>
<AppButton
:href="chromeWebstoreUrl"
mods="primary outline"
@click="startChecking"
>
Add to Chrome
</AppButton>
</template>
<template #installed>
<span>Jiminny Sidekick Extension</span>
<StatusBadge preset="success">Added</StatusBadge>
</template>
</BrowserExtensionInstaller>
</div>
</form>
<!-- Submit Form Button -->
<AppButton
@click="update"
:disabled="submitDisabled"
variant="primary"
:class="$style.submitButton"
mods="lg"
>
<template v-if="form.busy">
<i class="fa fa-btn fa-spinner fa-spin fa-icon-padding"></i>One
Moment...
</template>
<template v-else>
Let's Get Started!
<font-awesome-icon
:icon="faLongArrowRight"
:class="$style.submitIcon"
/>
</template>
</AppButton>
</div>
</WelcomeLayout>
</template>
<script>
// Icons
import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome";
import { faCheckCircle, faSync } from "@fortawesome/pro-regular-svg-icons";
import {
faCircleInfo,
faLongArrowRight,
} from "@fortawesome/pro-light-svg-icons";
import { faSalesforce } from "@fortawesome/free-brands-svg-icons/faSalesforce";
// Components
import BrowserExtensionInstaller from "@/components/shared/BrowserExtensionInstaller/BrowserExtensionInstaller.vue";
import PhoneField from "@/components/Settings/shared/FormElements/PhoneField.vue";
import SelectField from "@/components/Settings/shared/FormElements/SelectField.vue";
import BuildInfo from "@/components/layout/BuildInfo/BuildInfo.vue";
import InputField from "@/components/Settings/shared/FormElements/InputField.vue";
import AppButton from "@/components/shared/Buttons/AppButton.vue";
import StatusBadge from "@/components/shared/StatusBadge/StatusBadge.vue";
import BrandLogo from "@/components/shared/BrandLogo.vue";
import MobileAppModal from "@/components/shared/modals/MobileAppModal.vue";
import WelcomeLayout from "@/components/layout/WelcomeLayout/WelcomeLayout.vue";
import MobileAppDownload from "@/components/onboard/MobileAppDownload.vue";
// Utils
import { JiminnyForm, localStorage } from "window";
import axios from "axios";
import env from "@/utils/env";
import useragent from "@/utils/useragent";
import { isMobileAppSupported, isMobile } from "@/utils/mobileApp";
import useAuthState from "@/composables/useAuthState";
import { useForm, ErrorMessage, Field, defineRule } from "vee-validate";
import DOMPurify from "dompurify";
import useTimezonesCountriesHelper from "@/composables/useTimezonesCountriesHelper";
import { computed, ref, onMounted, watch, unref, reactive } from "vue";
import { openModal } from "jenesius-vue-modal";
import { useStore } from "vuex";
import * as Sentry from "@sentry/vue";
import { numeric, min, max } from "@vee-validate/rules";
import { useLocalStorage } from "@vueuse/core";
import { showSnackbarError, normalizeError } from "@/utils";
import { Tippy } from "vue-tippy";
import intlTelInput from "intl-tel-input";
import { useUserLocalesSettings } from "@/composables/useUserLocalesSettings";
import UserLocalesInputs from "@/components/shared/UserLocalesInputs/UserLocalesInputs.vue";
import { IntegrationAppClient } from "@integration-app/sdk";
import useProvidersSyncState from "./useProvidersSyncState";
defineRule("numeric", numeric);
defineRule("min", min);
defineRule("max", max);
export default {
name: "OnboardPage",
components: {
BuildInfo,
FontAwesomeIcon,
BrowserExtensionInstaller,
PhoneField,
SelectField,
InputField,
Field,
ErrorMessage,
AppButton,
StatusBadge,
BrandLogo,
WelcomeLayout,
MobileAppDownload,
Tippy,
UserLocalesInputs,
},
setup() {
const { crmRequired, crmConnection, crmName, crmDetails, backendErrors } =
window.onboardData;
const countryCodes = ["CA", "US"];
const chromeExtensionId = env("CHROME_WEB_STORE_EXT_ID");
const inChrome = useragent.browser.name === "Chrome";
// Store getters
const store = useStore();
const user = computed(() => store.getters["platform/user"]);
const team = computed(() => store.getters["platform/team"]);
// Actions
const updateUser = store.dispatch.bind(store, "platform/updateUser");
const sync = useProvidersSyncState();
let unwatch = null;
const { validate } = useForm();
const { canAny } = useAuthState();
const { timezonesArray, initTimezones, timezonesReady } =
useTimezonesCountriesHelper();
initTimezones();
const finishOnboardingUtils = useFinishOnboarding();
const jobs = ref([]);
const { cache: cachedForm, clearCache: clearCachedForm } =
useUserCache("onboard-form");
const userLocales = reactive(
useUserLocalesSettings({
modelMinLength: 1,
cachedUserData: cachedForm.value,
}),
);
const form = ref(
new JiminnyForm({
phone: "", // mobile phone
job_title_id: "",
secondary_phone: "", // secondary phone if softphoneSecondaryRoute = 'work'
country_code: "",
softphone_pattern: null,
softphone_number: "", // telephony provider i.e. sms/softphone number
softphone_national: "", // national formatted sms/softphone number
timezone: "",
...cachedForm.value,
}),
);
const countries = computed(() => {
return intlTelInput.getCountryData().map((data) => {
return {
id: data.iso2,
text: `+${data.dialCode}`,
};
});
});
const softphonePattern = computed(() => {
const countryCode = form.value["softphone_country_code"]?.toUpperCase();
if (!countryCode) return {};
return countryCodes.includes(countryCode)
? {
maxLength: 3,
helper: "Please select your area code e.g. 917",
}
: {
maxLength: 5,
helper: "Your local area code e.g. 0161",
};
});
const chromeWebstoreUrl = ref(null);
const softphoneCountryCode = ref(
form.value["softphone_country_code"] || "",
);
watch(
() => softphoneCountryCode.value,
(newValue) => {
onSoftphoneCountryCodeChange(newValue);
},
);
// Computed Props
const userHasTelephonyPermission = computed(() => canAny(["dial", "sms"]));
const capitalizedCrmName = crmDetails.displayName;
const needConfigureSoftphoneNumber = computed(
() => !user.value.softphoneNumber && userHasTelephonyPermission.value,
);
const needsToConfigurePhoneNumber = computed(
() => user.value.needsToConfigurePhoneNumber,
);
const hasBrowserExtensionInstaller = computed(
() =>
canAny(["record.meeting", "dial"]) &&
user.value.hasSidekickEnabled &&
inChrome &&
chromeExtensionId &&
chromeWebstoreUrl.value,
);
const hasCrmPermission = computed(
() => user.value.crmRequired && crmRequired,
);
const crmConnectUrl = computed(
() => `/auth/redirect/${DOMPurify.sanitize(crmDetails.name)}`,
);
/** BEGIN: IntegrationApp related functionality */
const crmToken = ref(null);
const crmConnectIntegrationApp = async function () {
const integrationApp = new IntegrationAppClient({
token: crmToken.value,
});
const connection = await integrationApp
.integration(crmDetails.name)
.openNewConnection({
showPoweredBy: false,
allowMultipleConnections: false,
});
// if (!connection || connection.connected === false) {
if (!connection || connection.disconnected === true) {
showSnackbarError(
"A connection with your CRM could not be established",
);
return;
}
try {
const saveRequest = await axios.post("/api/v1/integration-app-connect");
if (saveRequest.data && saveRequest.data.success === true) {
/** If all is good refresh the page here */
return location.reload();
}
throw new Error(saveRequest.data.message);
} catch (error) {
console.log(error);
showSnackbarError(normalizeError(error));
}
};
const prepareIntegrationAppConnection = async function () {
if (crmDetails?.viaIntegrationApp) {
try {
const response = await axios.get("/api/v1/integration-app-token");
crmToken.value = response.data.token;
} catch (error) {
console.log(error);
showSnackbarError(
`An error occurred while preparing the page.
Try refreshing, if the error persists get in touch with the Jiminny team.`,
);
}
}
};
if (crmRequired) {
// Prepare the crm token only if the CRM is required
prepareIntegrationAppConnection();
}
/** END: IntegrationApp related functionality */
const showJobSelector = computed(() => !user.value.job);
const showDeskPhoneNumber = computed(
() =>
needsToConfigurePhoneNumber.value &&
!user.value.secondaryPhone &&
team.value.softphoneRoutingPreference,
);
// Only users who can record calls
const canRecord = computed(() => canAny(["record.meeting", "dial"]));
const submitDisabled = computed(() => {
if (unref(form).busy) return true;
return sync.anyNeedAuthorization;
});
// Methods
function showErrors() {
if (backendErrors.length > 0) {
backendErrors.forEach((error) =>
showSnackbarError(error, undefined, undefined, false),
);
}
}
async function getSoftphoneNumber() {
form.value.errors.forget();
if (!form.value["softphone_country_code"]) {
return form.value.errors.set({
softphone_country_code: ["The country field is required."],
});
}
const { valid } = await validate();
if (!valid) {
return;
}
try {
const params = {
pattern: form.value["softphone_pattern"],
country_code: form.value["softphone_country_code"].toUpperCase(),
capabilities: ["voice", "sms"],
};
/**
* Exemplary response:
* {
* "number": "[PHONE]",
* "national": "07782 581322", // national is formatted number
* "pattern": "7782" // patrten is area code
* }
*/
const { data } = await axios.get("/api/v1/phone-numbers", {
params,
});
form.value["softphone_number"] = data?.number || "";
form.value["softphone_national"] = data?.national || "";
form.value["softphone_pattern"] = data?.pattern || null;
} catch (errors) {
form.value["softphone_number"] = "";
form.value["softphone_national"] = "";
form.value["softphone_pattern"] = null;
handleErrors(errors.response.data);
}
}
function handleErrors(errors) {
if (Object.prototype.hasOwnProperty.call(errors, "errors")) {
form.value.errors.set(errors.errors);
} else {
form.value.errors.set(errors);
}
}
async function getJobTitles() {
const response = await axios.get(
`/api/v1/organizations/${team.value.id}/job-titles`,
);
jobs.value = response.data;
}
function preselectSoftphoneCountryCode() {
form.value["softphone_country_code"] ||= selectedCountry()?.id || "";
}
function selectedCountry() {
const countryCode = user.value.countryCode?.toLowerCase() || "";
if (!countryCode) return "";
return countries.value.find((country) => country.id === countryCode);
}
function onSoftphoneCountryCodeChange(countryCode) {
form.value["softphone_country_code"] = countryCode;
form.value["softphone_pattern"] = null;
form.value["softphone_national"] = "";
form.value["softphone_number"] = "";
getSoftphoneNumber();
}
async function update() {
try {
form.value.busy = true;
const payload = form.value;
payload["country_code"] = form.value["country_code"].toUpperCase();
Object.assign(payload, unref(userLocales.formData));
await axios.post("/onboard", payload);
form.value.errors.forget();
localStorage.setItem("showVerifyCallerIdModal", true);
updateUser();
clearCachedForm();
finishOnboardingUtils.onOnboardReady();
} catch (errors) {
const response = errors.response.data;
const errorData = Object.hasOwn(response, "errors")
? errors.response.data.errors
: errors.response.data;
form.value.errors.set(errorData);
if (errorData.sync_email) showSnackbarError(errorData.sync_email[0]);
if (errorData.sync_calendar)
showSnackbarError(errorData.sync_calendar[0]);
} finally {
form.value.busy = false;
}
}
function resetLanguageError(value) {
if (value) {
form.value.errors.set("language", "");
}
}
// preselect timezone
unwatch = watch(
() => timezonesReady.value,
(ready) => {
// user already selected a timezone
if (form.value.timezone) return;
if (!ready) return;
const browserTimezone =
Intl.DateTimeFormat().resolvedOptions().timeZone;
const hasBrowserTimezone = timezonesArray.value.some(
({ tzCode }) => tzCode === browserTimezone,
);
if (hasBrowserTimezone) {
form.value["timezone"] = browserTimezone;
} else {
// Fallback to the initial user timezone (which should match the team timezone)
form.value["timezone"] = user.value?.timezone || "";
const errorMessage = `Browser timezone doesn't match any of our timezones. Will fallback to the initial user timezone (which should match the team's timezone). Browser timezone: "${browserTimezone}"`;
console.error(errorMessage);
Sentry.captureException(new Error(errorMessage));
}
// Stop watching
if (unwatch) {
unwatch();
}
},
{ immediate: true },
);
onMounted(() => {
showErrors();
if (needConfigureSoftphoneNumber.value) {
preselectSoftphoneCountryCode();
if (!form.value.softphone_number) getSoftphoneNumber();
}
form.value["phone"] ||= user.value.phone || "";
form.value["secondary_phone"] ||= user.value.secondaryPhone || "";
form.value["softphone_number"] ||= user.value.softphoneNumber || "";
form.value["job_title_id"] ||= user.value.job?.id || false;
if (canRecord.value) {
form.value["language"] ||= "";
}
if (showJobSelector.value) getJobTitles();
const webStoreUrlLink = document.querySelector(
"link[rel=chrome-webstore-item]",
);
if (webStoreUrlLink) {
chromeWebstoreUrl.value = DOMPurify.sanitize(
webStoreUrlLink.getAttribute("href"),
);
}
});
watch(
form,
(form) => {
cachedForm.value = form;
},
{ deep: true },
);
watch(
() => userLocales.formData,
(userLocales) => {
cachedForm.value = {
...cachedForm.value,
...userLocales,
};
},
);
return {
submitDisabled,
...finishOnboardingUtils,
userLocales,
sync,
clearCachedForm,
validate,
faCircleInfo,
faLongArrowRight,
faSalesforce,
faCheckCircle,
faSync,
timezonesArray,
timezonesReady,
crmConnection,
crmName,
crmDetails,
softphoneCountryCode,
countries,
softphonePattern,
chromeWebstoreUrl,
chromeExtensionId,
user,
capitalizedCrmName,
needConfigureSoftphoneNumber,
needsToConfigurePhoneNumber,
hasBrowserExtensionInstaller,
hasCrmPermission,
crmConnectUrl,
crmConnectIntegrationApp,
showJobSelector,
showDeskPhoneNumber,
canRecord,
getSoftphoneNumber,
update,
resetLanguageError,
form,
jobs,
crmToken,
};
},
};
function useFinishOnboarding() {
const isSuggestingMobileApp = ref(null);
const pageTitle = computed(() =>
isMobileAppSupported && unref(isSuggestingMobileApp)
? "Download App"
: "Update your information",
);
const store = useStore();
const isWhiteLabel = computed(() => store.getters["platform/isWhiteLabel"]);
async function suggestMobileApp() {
isSuggestingMobileApp.value = isMobileAppSupported;
// for supported phones a corresponding download component is displayed
if (unref(isSuggestingMobileApp)) return;
// for non mobile devices a modal is displayed and an action is required
if (!isMobile) await openMobileAppModal();
finishOnboarding();
}
async function finishOnboarding() {
window.location = "/dashboard";
}
async function openMobileAppModal() {
const modal = await openModal(MobileAppModal);
return new Promise((resolve) => (modal.onclose = resolve));
}
function onOnboardReady() {
if (unref(isWhiteLabel)) return finishOnboarding();
suggestMobileApp();
}
return {
pageTitle,
isSuggestingMobileApp,
finishOnboarding,
onOnboardReady,
};
}
function useUserCache(key, defaultValue = {}) {
const store = useStore();
const id = computed(() => store.getters["platform/user"]?.id);
const cache = useLocalStorage(key, {});
function clearCache() {
cache.value = undefined;
}
return {
cache: computed({
get() {
return cache.value[id.value] || defaultValue;
},
set(value) {
cache.value = {
[id.value]: value,
};
},
}),
clearCache,
};
}
</script>
<style module lang="less" src="./Onboard.less"></style>
Project
Project
New File or Directory…
Expand Selected
Collapse All
Options
Hide...
|
36765
|
|
36851
|
NULL
|
0
|
2026-04-16T11:03:43.657656+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337423657_m1.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6]Support Daily - in 57 m• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kBgzip:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 14:03:43181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
NULL
|
3379791640942853751
|
NULL
|
click
|
ocr
|
NULL
|
FirefoxFileEditViewHistoryBookmarksProfilesToolsWi FirefoxFileEditViewHistoryBookmarksProfilesToolsWindowHelpla6]Support Daily - in 57 m• 0DOCKER• 881DEV (docker)882APP (-zsh)APP (-zsh)*3ec2-user@ip-10-30-…..₴4../public/vue-assets/assets/lib-BPR1zwwF.js./public/vue-assets/assets/AppFormField-ClvU-siT.js../public/vue-assets/assets/deal-view-2yBsuDas.js./public/vue-assets/assets/exports-DLyAIXcT.js./public/vue-assets/assets/playlists-Ch1szaDX.js../public/vue-assets/assets/callScoringTemplates-DQc-joSr.js./public/vue-assets/assets/._copy0bject-DzIIjTZN.js./public/vue-assets/assets/pusher-CYYPj3Hn.js../public/vue-assets/assets/onboard-DQI072cX.js../public/vue-assets/assets/StatusBadge-BQfC4V-1.js../public/vue-assets/assets/kiosk-BjikFdWC.js../public/vue-assets/assets/deal-insights-Bjm4s2ZH.js../public/vue-assets/assets/ListView-DN0IvNj1.js:/public/vue-assets/assets/_plugin-vue_export-helper-sSsOrPyg.js./public/vue-assets/assets/WelcomeLayout-CI_AuldJ.js../public/vue-assets/assets/dashboard-C9KqLfH9.js./public/vue-assets/assets/emoji-input-D_ee3_TC.js./public/vue-assets/assets/sentry-DwJ1eG1J.js../public/vue-assets/assets/OrgSettingsLayout-71080Xc4.js../public/vue-assets/assets/vuex.esm-bundler-CxmCn-TU.js./public/vue-assets/assets/playback-CRVaGB1b.js../public/vue-assets/assets/AppButton-OYq5I1u7.js../public/vue-assets/assets/index.module-DoWLv01P.js../public/vue-assets/assets/intl-tel-input-C4VqCHzY.js../public/vue-assets/assets/team-insights-Dp-fGvTr.js../public/vue-assets/assets/popper-DC--DigQ.js../public/vue-assets/assets/PhoneField-DsfvGNKO.js../public/vue-assets/assets/live-DWF1LoCQ.js../public/vue-assets/assets/video-js-skin.less_vue_type_style_index_0_src_true_lang-D2hx_saF.js../public/vue-assets/assets/index-C3z72j_L.js../public/vue-assets/assets/logged-in-layout-_jx6BcaQ.js-zsh• ₴5|39.69kB41.87kB43.21kB47.84kB48.24kB55.13kB61.28kB62.98kB63.06kB64.62kB79.57kB94.84kB115.66kB117.59kB120.68kB128.67kB129.28kB164.28kB176.44kB180.40 kB197.96 kB210.96 kB218.14kB264.94 KВ298.53kB307.13kB343.99kB367.43kB689.63kB825.14kB1,402.47 KB-zshgzip:12.70 kBgzip:12.68kBgz1p:14.34kBgzip:16.46kB9z1p:15.07kBgz1p:13.28kBgzip:20.08kB9z1p:18.89kBgzip:21.84kBgzip:22.94kBgzip:22.63kBgzip:28.17kBgz1p:33.77kBgzip:38.70kB9z1p:34.16kBgz1p:40.05kBgzip:36.72kBgz1p:52.24kBgzip:56.16kB9z1p:67.85 kBgzip:61.61kBgzip:68.66kBgz1p:64.16kBgzip:60.30 kB9z1p:77.21kBgz1p:103.87kBgzip:84.90 kB9z1p:97.04 kBgzip: 202.81kB9z1p:72.45 kBgzip: 438.07 kB[PLUGIN_TIMINGS] Warning: Your build spent significant time in plugins. Here is a breakdown:- vite:css (56%)- vite-plugin-externals (18%)- vite:vue (17%)See [URL_WITH_CREDENTIALS] ~/jiminny/app/front-end (JY-18909-automated-reports-ask-jiminny) $D100% <47O 878Thu 16 Apr 14:03:43181* Unable to acce...O x886-zshmap:138.34kBmap:150.73kBmap:150.62kBтар :294.48kBтар:153.25kBmap:65.85kBтар :239.59kBтар:219.27kBmap:201.39kBmap:244.72kBтар:300.68kBmaр:292.79kBmap:308.10kBтар :500.60kBmар:258.56kBmap:410.48kBтар :266.15kBтар :831.82kBmap:623.70 kBmaр:836.88 kBтар:680.92 kBmap:3,947.49 kBmap: 1,108.20 kBтар :475.61 kBтар:959.66kBmap: 1,245.28 kBтар :849.05 kBmар :792.41 kBmap: 3,016.64 kBmaр:436.28 kBmap: 6,282.82 KBAPP...
|
36849
|
|
36855
|
NULL
|
0
|
2026-04-16T11:03:53.152658+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337433152_m2.jpg...
|
NULL
|
NULL
|
True
|
NULL
|
monitor_2
|
NULL
|
NULL
|
NULL
|
NULL
|
PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembraneJiminny • Memorane( Fix an autocomplete mistake that sSumfonv|Component\Debua\ExcerApp "Loho CRM" • Kavita • Membra8Jiminny+ New TabNavigateD10$WindowHelp= app.jiminny.eu/dashboardMMMy RecordingsTeam RecordingsUnknown Customer MNotetaker added bv Martin Petkov5 Feb, 9:19 AMUnknown Customer WNotetaker added by Martin PetkovSreb. 9:13AMUnknown Customer MNotetaker added by Martin Petkov21 Jan, 5:55 PMUnknown Customer M~Notetaker added bv Martin Petkovi19 Jan, 3:55 PMUnknown Customer MNotetaker added by Ilian Kyuchukov9 Jan, 3:08 PMUnknown Customer Maudio-in-spanish-1-channel10 Dec, 2025, 11:06 AMUnknown Customer W2025-11-07-notetaker-added-on-04-05-24-at-1057/NOV. 2025.4:28 PMIUnknown Customer MNotetaker added by llian Kyuchukov31 Oct, 2025, 3:09 PMUnknown Customer M~ancrolc recorcing AA8 Oct, 2025, 9:43 AMUnknown Customer W2025-09-29-382949-bc-steph-dunkley-joined1 Oct, 2025, 8:28 AMUnknown Customer M7e9efee0-2801-4d78-b7e0-c86ea946884423 Sep, 2025, 11:12 AMC40MOjSupport Daily • in 57m100% C•8 Thu 16 Apr 14:03:52Everyone's RecordingsTrending this monthSort by: Most playedLive FeedScheduleThis WeekUnknown Customer MDaily -Processingimer 0dTeam ScheduleMNo MeetingsAdelina Petrova listened to call 6dactivity with Joshua Christopherđ Held: 21 Oct, 2024, 2:59 PM|Adelina Petrova listened to call 60activity with In-Flight Crew Connectionsđ Held: 18 Aug, 2025, 4:28 PM|Martin Petkov listened to call 6дactivity with unknown customerđ Held: 5 Feb, 9:16 AM|Integration Account listened to call 6dactiviry with unknown customenHeld: 10 Dec, 2025, 10:57 AMSteliyan Georgiev listened to call 6dactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PM|Stoyan Tomov listened to call 6đactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PMNikolay Ivanov listened to call 6дactivity with unknown customerHeld: 22 Jul, 2025, 11:54 AM|Mobile Automation listened to call 6dactivity with Olha Denesiukđ Held: 19 Aug, 2025, 4:28 PMMobile Automation listened to call 6дFeedback Call with unknown customerđ Held: 19 May, 2025, 12:24 AM|Ở Duration: 41mỞ Duration: 30mÔ Duration: 3mÔ Duration: 8mDuration: 30mỞ Duration: 30mỞ Duration: 2mỞ Duration: 30mỞ Duration: 1h6 Mar. 2:23 PMI≥ Value: $0JFeh. 7:39 PMIValue: $7,9685 Feb, 9:22 AMÈ Value: $07 Jan, 2:55 PM≥ Value: $08 Sep, 2025, 12:28 PM§ Value: $08 Sep, 2025, 12:22 PM≤, Value: $025 Aug, 2025, 2:56 PME Value: $021 Aug, 2025, 3:06 PM§ Value: $021 Aug, 2025, 3:05 PM§ Value: $0...
|
NULL
|
-3608480734667456000
|
NULL
|
visual_change
|
ocr
|
NULL
|
PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 PhpStormFileEditViewCodeLaravelRefactorRunToolsM°7 Jiminny x Shiji - Reconnecting theZ For you - Confluence(6) Lukas Kovalik - Time Offu Product Growth Plattorm Userpilou Userpilot(fix(security): composer dependenda JiminnyNew Taba Jiminny© GoogleIntegrationAccessor MembraneJiminny • Memorane( Fix an autocomplete mistake that sSumfonv|Component\Debua\ExcerApp "Loho CRM" • Kavita • Membra8Jiminny+ New TabNavigateD10$WindowHelp= app.jiminny.eu/dashboardMMMy RecordingsTeam RecordingsUnknown Customer MNotetaker added bv Martin Petkov5 Feb, 9:19 AMUnknown Customer WNotetaker added by Martin PetkovSreb. 9:13AMUnknown Customer MNotetaker added by Martin Petkov21 Jan, 5:55 PMUnknown Customer M~Notetaker added bv Martin Petkovi19 Jan, 3:55 PMUnknown Customer MNotetaker added by Ilian Kyuchukov9 Jan, 3:08 PMUnknown Customer Maudio-in-spanish-1-channel10 Dec, 2025, 11:06 AMUnknown Customer W2025-11-07-notetaker-added-on-04-05-24-at-1057/NOV. 2025.4:28 PMIUnknown Customer MNotetaker added by llian Kyuchukov31 Oct, 2025, 3:09 PMUnknown Customer M~ancrolc recorcing AA8 Oct, 2025, 9:43 AMUnknown Customer W2025-09-29-382949-bc-steph-dunkley-joined1 Oct, 2025, 8:28 AMUnknown Customer M7e9efee0-2801-4d78-b7e0-c86ea946884423 Sep, 2025, 11:12 AMC40MOjSupport Daily • in 57m100% C•8 Thu 16 Apr 14:03:52Everyone's RecordingsTrending this monthSort by: Most playedLive FeedScheduleThis WeekUnknown Customer MDaily -Processingimer 0dTeam ScheduleMNo MeetingsAdelina Petrova listened to call 6dactivity with Joshua Christopherđ Held: 21 Oct, 2024, 2:59 PM|Adelina Petrova listened to call 60activity with In-Flight Crew Connectionsđ Held: 18 Aug, 2025, 4:28 PM|Martin Petkov listened to call 6дactivity with unknown customerđ Held: 5 Feb, 9:16 AM|Integration Account listened to call 6dactiviry with unknown customenHeld: 10 Dec, 2025, 10:57 AMSteliyan Georgiev listened to call 6dactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PM|Stoyan Tomov listened to call 6đactivity with Olha DenesiukHeld: 19 Aug, 2025, 4:28 PMNikolay Ivanov listened to call 6дactivity with unknown customerHeld: 22 Jul, 2025, 11:54 AM|Mobile Automation listened to call 6dactivity with Olha Denesiukđ Held: 19 Aug, 2025, 4:28 PMMobile Automation listened to call 6дFeedback Call with unknown customerđ Held: 19 May, 2025, 12:24 AM|Ở Duration: 41mỞ Duration: 30mÔ Duration: 3mÔ Duration: 8mDuration: 30mỞ Duration: 30mỞ Duration: 2mỞ Duration: 30mỞ Duration: 1h6 Mar. 2:23 PMI≥ Value: $0JFeh. 7:39 PMIValue: $7,9685 Feb, 9:22 AMÈ Value: $07 Jan, 2:55 PM≥ Value: $08 Sep, 2025, 12:28 PM§ Value: $08 Sep, 2025, 12:22 PM≤, Value: $025 Aug, 2025, 2:56 PME Value: $021 Aug, 2025, 3:06 PM§ Value: $021 Aug, 2025, 3:05 PM§ Value: $0...
|
36854
|
|
36926
|
NULL
|
0
|
2026-04-16T11:09:12.463806+00:00
|
/Users/lukas/.screenpipe/data/data/2026-04-16/1776 /Users/lukas/.screenpipe/data/data/2026-04-16/1776337752463_m1.jpg...
|
Slack
|
Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Sl Stoyan Tanev (DM) - Jiminny Inc - 3 new items - Slack...
|
True
|
NULL
|
monitor_1
|
NULL
|
NULL
|
NULL
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Stoyan Tanev
Mar 9th at 11:38:15 AM
11:38 AM
Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…...
|
[{"role":"AXRadioButton","text [{"role":"AXRadioButton","text":"Jiminny Inc","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXRadioButton","text":"Jiminny (Staging)","depth":12,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"Add workspaces","depth":12,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXRadioButton","text":"Home","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Home","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"DMs","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"DMs","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Activity","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Activity","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"Later","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Later","depth":16,"role_description":"text"},{"role":"AXRadioButton","text":"More…","depth":14,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"More","depth":16,"role_description":"text"},{"role":"AXStaticText","text":"Unreads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Threads","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Huddles","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Drafts & sent","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"Directories","depth":21,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-x-integration-app","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-inner-team","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"ai-chapter","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"alerts","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"backend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"confusion-clinic","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"curiosity_lab","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"engineering","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"frontend","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"general","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"infra-changes","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"jiminny-bg","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"platform-tickets","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"product_launches","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"random","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"releases","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"sofia-office","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"support","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"thank-yous","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"the_people_of_jiminny","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Stoyan Tanev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Nikolov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Vasil Vasilev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Galya Dimitrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Ivanov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Aneliya Angelova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Nikolay Yankov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ves","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Ilian Kyuchukov","depth":23,"role_description":"text"},{"role":"AXStaticText","text":",","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Steliyan Georgiev","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Adelina Petrova","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Jira Cloud","depth":23,"role_description":"text"},{"role":"AXStaticText","text":"Toast","depth":23,"role_description":"text"},{"role":"AXRadioButton","text":"Messages","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":true,"is_expanded":false},{"role":"AXStaticText","text":"Messages","depth":19,"role_description":"text"},{"role":"AXRadioButton","text":"Add canvas","depth":18,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Add canvas","depth":20,"role_description":"text"},{"role":"AXRadioButton","text":"Files","depth":17,"role_description":"tab","subrole":"AXTabButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Files","depth":19,"role_description":"text"},{"role":"AXPopUpButton","text":"Add and Edit Channel Tabs","depth":17,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Canvas","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"List","depth":17,"role_description":"text"},{"role":"AXStaticText","text":"Folder","depth":17,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:38:15 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:38:47 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:38 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:39:22 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:39","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"през customer-api доколкото знам","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:05 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.","depth":25,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:40:25 AM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:40","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Може би не зададох правилно въпроса","depth":25,"role_description":"text"},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:17 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"тука не знам, питай Тошко, той се занимаваше с него","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"1 reaction, react with raised hands emoji","depth":25,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1","depth":26,"role_description":"text"},{"role":"AXButton","text":"Add reaction…","depth":25,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 11:41:31 AM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"11:41 AM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Мерси много","depth":25,"role_description":"text"},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 9th at 2:55:22 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"2:55 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа \"Opportunity/Lead/Contact/Account\", но не съм сигурен дали е one to one или one to many.","depth":25,"role_description":"text"},{"role":"AXPopUpButton","text":"Jump to date","depth":23,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Stoyan Tanev","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:30 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"Здрасти, да те попитам за този тикет:","depth":25,"role_description":"text"},{"role":"AXLink","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"https://jiminny.atlassian.net/browse/SRD-6728","depth":26,"role_description":"text"},{"role":"AXLink","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":27,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"SRD-6728 Opportunities are not synced properly from Hubspot","depth":28,"role_description":"text"},{"role":"AXStaticText","text":"Status:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Ready for customer","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Type:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Bug","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Assignee:","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Lukas","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"Kovalik","depth":26,"role_description":"text"},{"role":"AXButton","text":"Assign","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Assign","depth":28,"role_description":"text"},{"role":"AXButton","text":"Change status","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Change status","depth":28,"role_description":"text"},{"role":"AXButton","text":"sparkles emoji AI Summarise","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"AI Summarise","depth":28,"role_description":"text"},{"role":"AXComboBox","text":"More actions...","depth":27,"placeholder":"More actions...","role_description":"combo box","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Added by","depth":26,"role_description":"text"},{"role":"AXLink","text":"Jira Cloud","depth":26,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"Jira Cloud","depth":27,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:47:48 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:47","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"това вече е оправено, или ще трябва да се синква на всеки нов клиент","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Lukas Kovalik","depth":24,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"","depth":24,"role_description":"text"},{"role":"AXLink","text":"Mar 26th at 1:49:46 PM","depth":24,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:49 PM","depth":25,"role_description":"text"},{"role":"AXStaticText","text":"здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"Save for later","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXPopUpButton","text":"More actions","depth":26,"role_description":"pop-up button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXLink","text":"Mar 26th at 1:50:07 PM","depth":25,"role_description":"link","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXStaticText","text":"1:50","depth":26,"role_description":"text"},{"role":"AXStaticText","text":"всеки път когато си сменят layout само се оправя","depth":25,"role_description":"text"},{"role":"AXCheckBox","text":"React with white_check_mark","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with eyes","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXCheckBox","text":"React with raised_hands","depth":26,"role_description":"toggle button","subrole":"AXToggleButton","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Add reaction…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Reply in thread","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false},{"role":"AXButton","text":"Forward message…","depth":26,"role_description":"button","is_enabled":true,"is_focused":false,"is_selected":false,"is_expanded":false}]...
|
7814019983244247979
|
-4238497129897878523
|
idle
|
hybrid
|
NULL
|
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Jiminny Inc
Jiminny (Staging)
Add workspaces
Home
Home
DMs
DMs
Activity
Activity
Files
Files
Later
Later
More…
More
Unreads
Threads
Huddles
Drafts & sent
Directories
jiminny-x-integration-app
platform-inner-team
ai-chapter
alerts
backend
confusion-clinic
curiosity_lab
engineering
frontend
general
infra-changes
jiminny-bg
platform-tickets
product_launches
random
releases
sofia-office
support
thank-yous
the_people_of_jiminny
Stoyan Tanev
Nikolay Nikolov
Vasil Vasilev
Galya Dimitrova
Nikolay Ivanov
Aneliya Angelova
Aneliya Angelova
,
Nikolay Yankov
,
Steliyan Georgiev
Ves
Steliyan Georgiev
Adelina Petrova
,
Ilian Kyuchukov
,
Steliyan Georgiev
Adelina Petrova
Jira Cloud
Toast
Messages
Messages
Add canvas
Add canvas
Files
Files
Add and Edit Channel Tabs
Canvas
List
Folder
Jump to date
Stoyan Tanev
Mar 9th at 11:38:15 AM
11:38 AM
Здрасти, чудех се дали знаеш как мапваме активитита в SF аппа?
Lukas Kovalik
Mar 9th at 11:38:47 AM
11:38 AM
здрасти
Mar 9th at 11:39:22 AM
11:39
през customer-api доколкото знам
Stoyan Tanev
Mar 9th at 11:40:05 AM
11:40 AM
Да, но как избираме към кой обект да ги закачим, дали контакт, акаунт и тн.
Mar 9th at 11:40:25 AM
11:40
Може би не зададох правилно въпроса
Lukas Kovalik
Mar 9th at 11:41:17 AM
11:41 AM
тука не знам, питай Тошко, той се занимаваше с него
1 reaction, react with raised hands emoji
1
Add reaction…
Stoyan Tanev
Mar 9th at 11:41:31 AM
11:41 AM
Мерси много
Stoyan Tanev
Mar 9th at 2:55:22 PM
2:55 PM
Значи логването в аппа зависи от как сме асоциирали активитито. Мисля, че подредбата е тази ако не се лъжа "Opportunity/Lead/Contact/Account", но не съм сигурен дали е one to one или one to many.
Jump to date
Stoyan Tanev
Mar 26th at 1:47:30 PM
1:47 PM
Здрасти, да те попитам за този тикет:
https://jiminny.atlassian.net/browse/SRD-6728
https://jiminny.atlassian.net/browse/SRD-6728
SRD-6728 Opportunities are not synced properly from Hubspot
SRD-6728 Opportunities are not synced properly from Hubspot
Status:
Ready for customer
Type:
Bug
Assignee:
Lukas
Kovalik
Assign
Assign
Change status
Change status
sparkles emoji AI Summarise
AI Summarise
More actions...
Added by
Jira Cloud
Jira Cloud
Mar 26th at 1:47:48 PM
1:47
това вече е оправено, или ще трябва да се синква на всеки нов клиент
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Lukas Kovalik
Mar 26th at 1:49:46 PM
1:49 PM
здрасти, за трите клиента от тикет ги пуснах манулано ако бяха повече или се оправи само или трябва да се пусне
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
Save for later
More actions
Mar 26th at 1:50:07 PM
1:50
всеки път когато си сменят layout само се оправя
React with white_check_mark
React with eyes
React with raised_hands
Add reaction…
Reply in thread
Forward message…
iTerm2ShellEditViewSessionScriptsProfilesWindowHelp(ahlSupport Daily • in 51 mБг)100% C78Thu 16 Apr 14:09:11• 0ec2-user@ip-10-20-6-111:~DOCKER2-981DEV (docker)H82APP (-zsh)83ec2-user@ip-10-.. 884-zsh• 85-zsh86-zsh'-*7-* Unable to a...ec2-user@ip-10-... *9L3Vzci1kZWwiLCJLdmVudExLYWREZWxLdGVkIjo1L3dlYmhvb2svaW50YXBwL2xkLWRLbCIsImV2zWS0RGVhbERLbGV0ZWQ101Lvd2ViaG9vay9pbnRhcHAvb3BwLWRLbCIsImV2zW50QWNjb3VudENyZWF0ZWQ101Ivd2ViaG9vay9pbnRhcHAvYWNjLWFkZCIsImV2ZW50QWNjb3VudFVwZGF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvYWNjLXVwZCIsImV2ZW50Q29udGFjdENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvY250LWFkZCIsImV2ZW50Q29udGFjdFVwZGF0ZWQiOiIvd2ViaG9vay9pbnRhcHAvY250LXVwZCIsImV2ZW50UHJvZmlsZUNyZWFOZWQi0iIvd2ViaG9vay9pbnRhcHAvdXNyLWFkZCIsImV2ZW50UHJvZmlsZVVwZGF0ZWQi0i[vd2ViaG9vay9pbnRhcHAvdXNyLXVwZCIsImV2zW50TGVhZENyZWF0ZWQi0iIvd2ViaG9vay9pbnRhcHAvbGQtYWRkIiwiZXZlbnRMZWFkVXBkYXR1ZCI6Ii93ZWJob29rL2ludGFwcC9sZC11cGQiLCJldmVudERlYWxDcmVhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC1hZGQiLCJldmVudER1YWxVcGRhdGVkIjoiL3dlYmhvb2svaW50YXBwL29wcC11cGQifX0.vozy2irRr71FoTCe23TiWjUHDiRJXu90jw2Rr2Yuy2c",#provider_refresh_token: null,expires: 1776421067,refresh_token_expires: null,provider:"integration-app",state: "full-refresh",auth_scope: null,retry_after: null,created_at:"2026-04-15 10:06:30"updated_at:"2026-04-16 10:17:47",#provider_user_token_encrypted: "eyJpdiI6Implb01VZkc3UmlxTDRPcWlaaTZQblE9PSIsInZhbHV1IjoiT1VmSUJodGxiQ1NNS31xWHNtRDU0K1R40WpxQi8xNnZHaXdyS2RHMW5GaDMrQzBPUXFodnhRNm0wam40TittRVVEUGRjY1FKWXNOV2NBSnVWc1RzRkRV0VgvdURJaUU2amloSzY5Q010d25jem04bGoyZUxUaGxJMTFTR2LvanJKV0M0cHpwK21PQXZqSVLPaUJ1ZG020XAxT2tzZmdQbzU4My91UGQ5NULGdkt6b1IwNGJwcUFoQLpHMVdNWj LOWU9SaUc1U2h0TzM2cWRNd0pGTT1QazJ2ZWtQY05sRFA0L29MeG1MekdhOGRaUD14MD1LcmRTNm1CQ1pjMDBYcXgrME1PQi9NL3QxK2VIM3U2b1hrWGxra2E0NEtKRjRyZHFrMjExWLdsYy90V2Q4Vkh6cXRxRTU4eWZRMH1jY1BBbU5LMUk10TJvN2pLU2V0QUtEZjhST0V1Y3ZicjRmY2JXWWVjTlF2SVBCV3VBR3dManM0bFhYeE03Q3dERitGM0p20HNPcHBDS3o2M1hUMWpLLy8rdFRUeUVhZTltMnNKcnJwcVLEL283RGxKYk1NazdGMFhFWmRXVWsvOHppTHRXdmJxSkRHQmhGeTFJL1gxWjFmRk4yMzB1TjFURVU1TGpvZEwzV2R1YXN2aXphRUs2TFVh0FNkRmtrUWdRbi9RLzZSZnRHai8vcVZFWkRGbzArU0U1YjQyV1I0MD1rZlF2alhhQ1ZHZ09vTXZZVOZDWmZhQSthMG50VjMvTkZt0HVtZVpLVmpPcUJCbzdjRHF2QnJRSUNYTkF3aVNwRmtsYXg1TmFn0CthcU9VQUorTkppZWZ2NEZKc0xEQitIdFZ4MUJubGJiTUtCbzlQMWo1VncxT0toWTVXQXLGNysxTnYrTTM0bFhtZzdBRDMyeHp3NmRUVEJ1Ym0zUDZKbExBWHdLU1VjNEptcUpjTXLick1ЗNms5bFlHQU1PWHVXRHpZMU1URG55dnFBbG0zaWEvUTlEMjJN0XhzNFpwYnZ5Q2RTTWJpV11NYVRXNm5hYWo2REV1bGR2bzRwK3FTаzFCMjV0MHhPWmV1NU14d3Y0WWk0V2N2dXQyK0ZCSiszZmZleElvVWx6V0tUdU9FaUJYcXdCaUs1RzNmRmZWQlc1dXAyMjgvSWNsakEyY1BBUnhmK1NzNDFmUGU5WWVHS25GZ01wSTZ6L3I0RjQyRnlVNXRsWUtlaTY4SkdTYzdoMkhsZF1KT0N5YXZrdXhDZmRIS285WjQwL21FUmsxdlV2dDYwMk9uUU5XU®VaWmJabThFR1BYR1dSQlhKRUhNWmlPWUpJaHhyU00wWEhWbWxNRWdmOWxySGVML2ZOdVNINTg0T0RQditFaXdSNTJtYVhSeHNkY3I0ajV0cnltWjhOYW1SU1VINE5PbXN4Z1JpRUpsTCtFdW1zMVFKclJTRHRtSWFBWVg5a2VRMmt1aC9xdFRCb1doT301c2dBRXJzTVhmemViNmE0VkJmK2M5ejAwNkZvWkFockdub3RFRlpzMHE0T2ZmeS9kbW45Qll1Nmt4VЗNNbHlZOVdSK2dmUFM2Y®h5bGwyeFNT0HBtT0tGWndZa®dGajRMQUdYUmNaYVp@QUQ×SStWU1Y3ZmVmV@xlZ081MWlubmtncXIrTlVIVzg1em95WGo0WjhCNmFtQ0FPc1ZmMzdtSUVIVy8vR3QyM2tDL1VyN01ETHVoaHFUcjdic1NPQm45R3F3RU1SU3d5bWh1V1pqa1oxemhhKzJWemVDdmdsbVU5VWL6T01jNkE1WnhSdzhybWQ1NTFGYkFmbldta0JXNDhmY2NiSHp1TzhEUGFDSWxIdWJmbFJvQTN3cGZFZLpwOHZ5L01xYUFBUURCSWx10XpISEt0SVd3NXNpdnpZZJLnNWx1M0k0a25VNnJHYVZhcDMwM1YvNjg3ZDdJQzdZb0pLL2NFdmt1NnBodjdW0GL6cVI1UEYxbGR4WLNSTVpycDd1Z016SkM5USt2ckZmVUtmNXBnZmZDZmZLU1kгK1I5N®04Q0d0MVYvаTRKZ1RUbUJScHdpSlRHTЗ1EZTJILytwSmFHZ1pKMHFYRDN®b1NKUmlSL1dKaUZ1VХN2K2E5Q3NndmU®YTlBbGtZZ1N3czk®WmQ1MFNSdXhaOHRLSGN5dXQ4RkU4dHBsZHovRHlJSkVtTlcwNVJYaGtFMLBIMUpYNTLmVHFjejJ5M2dlUFM4YUg1U1gzLzMzZTZMd2VTZldtdWQzVDZ5Z1VTdG41L2RGTXZZUGgrT2xLTFFzV205T1RGd3NMaGVXem50MnB5dnNtRDBwL1QyWGR4UT09IiwibWFjIjoiZmYwNDk3ZjYzOGRmYTFLOWUO0Tg2ZTk5MWiYjEzNDY2YWNm0TI0YTNjMzA1ZjU®MmM4MTY2MZU3YmV1ZDdhNSIsInRhZy[6[¡J9",#provider_refresh_token_encrypted: null,#encryption_key: b"\x01\x02\x03\0x"g3R7\x15&p\f Q\x7Fy\xOFLÎ?Ì, {Ïx°óMRª'|\x13§|\x01Í%(~Ñ-À19Li{@E§»\0\0\On01\x06\t*tHt=\r\x01\x07\x06_0]\x02\x01\00x x061t*THt÷\r\x01\x07\x010\x1E\x06\t'TH\x01e\x03\x04\x01.0\x11\x04\fViS\x17.\x04T;= 1_|x02\x01\x10E+h°-Áu1üT-nÂ\x1E5÷\x16 11·\x1C}7..Œ!Х -2=⅕ÝâùÊí\x11b~UÍÚ",sociable_type: "user"181}Ssa->state ='connected';"connected"> Ssa->saveO);[2026-04-16 11:07:00] production.INFO: [SocialAccountObserver] Saving model {"correlation_id":"f0c27b9c-124b-4113-ba69-6032b77e1f59","trace_id": "1f319797-bc16-43f3-95f2-81fc927b0482"}= true> 1...
|
NULL
|